attr ('defaultValue') retourne undefined en utilisant jQuery 1.6.3
J'ai un simple script en jQuery qui fonctionne parfaitement avec jQuery 1.5.2 comme vous pouvez le voir dans cette jsFiddle. Ce qui est censé arriver, c'est que lorsque vous attirer l'attention sur le champ de texte, la valeur par défaut est supprimé. Et quand, si vous laissez le champ vide, la valeur par défaut d'origine est remis en place.
Cependant, exactement le même code, où seulement jQuery 1.6.3 est utilisé au lieu de cela, ne fonctionne pas. (Pas de travail signifie que la valeur par défaut reste dans la zone de texte jusqu'à ce que vous le supprimiez manuellement comme vous pouvez le voir dans cette jsFiddle.
Il n'y a pas des erreurs de script dans la console et d'autres aspects de la fonction sont opérationnels. Vous pouvez voir le hover()
partie fonctionne bien dans les deux jsFiddles.
Version résumée (le Problème à la Racine)
jQuery 1.6.3 est de retour undefined
pour .attr('defaultValue')
.
jsFiddle à l'aide de jQuery 1.6.3 (ne fonctionne pas)
Cependant, jQuery 1.5.2 est de retour la valeur attendue pour .attr('defaultValue')
.
jsFiddle à l'aide de jQuery 1.5.2 (de travail)
Question:
Personne ne sait pourquoi ce qui se passe? (Il ressemble à un bug jQuery pour moi.)
La suite est encore à travailler...
document.getElementById().defaultValue
...mais je pense que c'est assez moche d'avoir à faire lorsque jQuery est disponible.
Je suis ouvert à d'autres suggestions.
source d'informationauteur Sparky | 2011-10-01
Vous devez vous connecter pour publier un commentaire.
Utilisation
prop()
:Démo Live: http://jsfiddle.net/kHBsD/8/
Vous voir,
'defaultValue'
n'est pas un attribut du contenu HTML (attribut) comme vous pouvez le voir par vous-même si vous regardez votre code source HTML. Au lieu de cela, c'est une propriété de la HTMLInputElement DOM nœud de l'élément.Voir ici: https://developer.mozilla.org/en/DOM/HTMLInputElement
Attributs existent dans le code source HTML.
Les propriétés existent dans l'arborescence DOM.
Lorsque le navigateur analyse le code source HTML, le HTML
<input>
élément d'interpréter et d'un correspondant HTMLInputElement DOM nœud est créé. Cet élément du DOM, contient des dizaines de propriétés ('defaultValue'
étant l'un d'eux).Ici, j'ai refait votre code:
Démo Live: http://jsfiddle.net/kHBsD/9/
prop()
n'est pas nécessaire - vous avez lethis
de référence, de sorte que vous pouvez simplement accéder à la propriété directement. Aussi ceux placez les gestionnaires ne sont pas nécessaires, il suffit d'utiliser uninput:hover
règle CSS.