2010-09-08 7 views
3

La Déclaration
Avec jquery si vous avez un élément de bouton défini comme suit: <button value="123">456</button>Jquery différences de navigateur .val()

Browsers vous donnera des valeurs différentes si vous utilisez l'.attr('value'); ou .val();


La raison?
Un élément <button> est simplement <input type="button"> dans un raccourci.

La façon dont vous définissez la valeur de <input type="button"> est de mettre value="Click Me"

Par conséquent <input type="button" value="Click Me"> est le même que <button>Click Me</button>.


La question
Pourquoi l'utilisation .val() retour des valeurs différentes sur un autre navigateur. Qui a raison?
Firefox:
.val() = 123 | texte affiché = 456
Chrome:
.val() = 123 | texte affiché = 456
> = Internet Explorer 8:
.val() = 123 | texte affiché = 456
< = Internet Explorer 7:
.val() = 456 | texte affiché = 456

+0

http://www.jsfiddle.net/fD9xd/ - Les deux FF et IE se comportent à l'identique pour moi ...: - \ –

+0

@Floyd Pink - IE 8 montre '123', mais IE 6 montre' 456' . –

+0

J'ai corrigé le post. <= IE 7 montre 456. – Hailwood

Répondre

4

Lire sur le w3 specification Je suis amené à croire que Chrome et Firefox sont corrects. Plus précisément à cause de cela cet extrait:

boutons créés avec la fonction de l'élément BUTTON comme des boutons créés avec l'élément INPUT, mais ils offrent possibilités de rendu les plus riches: l'élément BUTTON peut avoir un contenu.

La spécification W3 fait référence aux informations trouvées entre les balises <button></button> comme contenu plutôt que valeur, qui est ce qui me conduit à mon observation. Un autre indice est qu'Internet Explorer est le seul à renvoyer une valeur différente, et je suis à peu près certain qu'Internet Explorer est la racine de toute angoisse dans l'univers. J'ai aussi décidé de tester Safari 5, Opera, Chrome et Firefox 3.6.8 sur Mac. J'ai aussi décidé de tester Safari 5, Opera, Chrome et Firefox 3.6.8. Tous retournent 456 comme texte affiché et 123 comme .val()

+1

Le problème semble être que jQuery prend la mauvaise valeur quand il est IE 6. –

0

Je suis sur IE 8.0.6001.* et il se comporte exactement comme le fait Firefox - http://www.jsfiddle.net/AKGsd/3/

Vous avez probablement découvert encore un autre bug/fonction d'Internet Exploiter anciennes versions ... Soupir!

Questions connexes