IE9 HTML5 espace réservé - comment sont les gens à atteindre cet objectif?
Je suis en train d'utiliser le placeholder="xxx"
attribut dans mon application web, et je ne veux pas avoir un visuel spécial pour IE9. Les gens peuvent jeter quelques bonnes suggestions pour la réalisation de cette fonctionnalité dans IE9?
J'ai trouvé quelques liens ici, mais aucun de ces scripts ont été suffisante... et les réponses ont été à partir de mi-2011, alors j'ai pensé que peut-être il est une meilleure solution là-bas. Peut-être avec un largement adopté plugin jQuery? Je ne veux pas utiliser quoi que ce soit qui nécessite intrusive code comme nécessitant une certaine classe css ou quelque chose.
Grâce.
MODIFIER - j'ai aussi besoin de ce travail pour les champs de saisie de mot de passe.
//the below snippet should work, but isn't.
$(document).ready(function() {
initPlaceholders()();
}
function initPlaceholders() {
$.support.placeholder = false;
var test = document.createElement('input');
if ('placeholder' in test) {
$.support.placeholder = true;
return function() { }
} else {
return function() {
$(function() {
var active = document.activeElement;
$('form').delegate(':text, :password', 'focus', function() {
var _placeholder = $(this).attr('placeholder'),
_val = $(this).val();
if (_placeholder != '' && _val == _placeholder) {
$(this).val('').removeClass('hasPlaceholder');
}
}).delegate(':text, :password', 'blur', function() {
var _placeholder = $(this).attr('placeholder'),
_val = $(this).val();
if (_placeholder != '' && (_val == '' || _val == _placeholder)) {
$(this).val(_placeholder).addClass('hasPlaceholder');
}
}).submit(function() {
$(this).find('.hasPlaceholder').each(function() { $(this).val(''); });
});
$(':text, :password').blur();
$(active).focus();
});
}
}
}
- double possible de espace réservé dans ie9
Vous devez vous connecter pour publier un commentaire.
Nous avons juste fait des recherches la même chose. Nous avons décidé de réutilisation de la ce gist, par Aaron McCall, après avoir fait quelques changements mineurs. Le principal avantage est qu'il est simple, facile à comprendre le code:
Retirez le noyau et setup_placeholders pièces. Il vous suffit d'appeler immédiatement dans une fonction anonyme.
Ajouter
var
avanttest
.Pour les navigateurs qui prennent en charge
placeholder
, tout simplement, il revient à cela. Elle s'occupe également de nouveaux éléments d'entrée (notez l'utilisation dedelegate
) dans les formes actuelles. Mais ne gère pas la dynamique de nouveaux éléments de formulaire. Il pourrait probablement être modifié pour le faire avecjQuery.on
.Si vous n'aimez pas cela, vous pouvez utiliser l'un de ceux ici. Cependant, certains d'entre eux sont extrêmement compliquées, ou douteux, les décisions de conception comme
setTimeout
pour détecter de nouveaux éléments.Noter qu'il doit utiliser deux paires de parenthèses, puisque vous êtes à l'appel d'une fonction anonyme, puis en appelant la fonction renvoyée (cela pourrait être pris en compte différemment):
, :password
après:text
.initPlaceholders()()
.:text
avec:text, :password
à travers l'ensemble de la fonction.:text
, mais faut dire:text, :password
. Pendant que vous y êtes, vous souhaitez peut-être utiliser une variable pour cela.ready
temps? Autre que cela, je vais tester sous IE 9 demain. Oh, et c'est dans un formulaire, non?delegate()
fonction utilisée en qui gist a été remplacé paron()
de jQuery 1.7. La syntaxe est légèrement différente, changez la position du sélecteur et les arguments d'événement api.jquery.com/delegateJ'ai écrit un plugin jquery un temps, qui ajoute de l'espace réservé à l'appui de n'importe quel navigateur qui ne prend pas en charge et ne fait rien dans ceux qui le font.
Espace Réservé Plugin
Voici un plugin jQuery qui fonctionne avec les champs de mot de passe ainsi. Ce n'est pas aussi minuscule que le code proposé par Matthieu, mais il a un peu plus de correctifs en elle. J'ai utilisé cela avec H5Validate ainsi.
http://webcloud.se/code/jQuery-Placeholder/