Y a-t-il une raison pour laquelle val()
étant inutile pour les contrôles de cases à cocher, alors qu'elle est utile pour obtenir des données d'entrée de manière cohérente dans tous les autres contrôles d'entrée ?
Par exemple, pour les cases à cocher, il semble qu'il faut renvoie toujours "on", quel que soit l'état de la case à cocher. Pour les autres contrôles d'entrée qui n'ont pas d'attribut "value", par exemple select et textarea, il se comporte comme prévu. Voir :
http://jsfiddle.net/jamietre/sdF2h/4/
Je ne vois pas de raison pour laquelle il ne reviendrait pas. true
ou false
. Si ce n'est pas le cas, il faut au moins renvoyer "on" uniquement lorsque la case est cochée, et une chaîne vide dans le cas contraire. Si ce n'est pas le cas, il faut au moins toujours renvoyer une chaîne vide, étant donné que les cases à cocher n'ont pas d'objet de type value
attribut !
Je sais évidemment comment obtenir la valeur en utilisant attr
mais voici la situation. Je suis en train de développer une implémentation simple (jusqu'ici en tout cas) de jQuery en C# pour faire du parsing HTML sur le serveur, et j'essaie d'être complètement fidèle à l'implémentation de jQuery pour qu'elle se comporte de manière cohérente sur le client ou le serveur par rapport au même DOM. Mais cela semble stupide et j'ai du mal à me convaincre de coder "value" pour qu'il renvoie "ON" pour une case à cocher, quoi qu'il arrive. Mais si je ne le fais pas, ce ne sera pas cohérent. J'essaie donc de comprendre : y a-t-il une raison de faire cela ? Est-ce que cela sert à quelque chose, ou est-ce simplement un artefact quelconque ? Est-ce que quelqu'un utiliserait jamais le val()
contre une case à cocher, si oui, pourquoi ? Si ce n'est pas le cas, pourquoi les architectes de jQuery ont-ils opté pour cette approche pour qu'elle ne soit pas utile ?
0 votes
Vous devez également fermer vos balises d'option
1 votes
C'est très bizarre, mais c'est bien du javascript. Il suffit d'utiliser attr('checked') et, malheureusement, de ne pas être cohérent. :|