Le nom du champ n'est pas foo
, c'est - foo[]
. Vous pouvez utiliser le attributeStartsWith sélecteur:
$("input[name^='foo']:checked:enabled",'#myform');
Idéalement, vous seriez en mesure de le faire:
$("input[name='foo[]']:checked:enabled",'#myform');
Mais comme cette réponse explique, jQuery utilise pour analyser l' value
de la partie de l' attr=value
condition de:
(['"]*)(.*?)\3|)\s*\]
\3 étant le groupe contenant de l'ouverture des guillemets, qui bizarrement sont autorisés à être ouverture de plusieurs citations, ou pas de l'ouverture des guillemets à tous. L' .*? alors peut analyser n'importe quel caractère, y compris les citations jusqu'à ce qu'il frappe le premier ‘]' caractère, se terminant le match. Il n'y a aucune disposition pour la barre oblique inverse d'échappement des CSS de caractères spéciaux, de sorte que vous ne peut pas correspondre à une chaîne de caractères arbitraire de la valeur en jQuery.
En d'autres termes, dès que jQuery frappe le premier ]
il pense que la valeur est de plus de. Donc, vous êtes coincé avec startsWith ou en utilisant uniquement des éléments du DOM, que cette réponse est-elle explique.
SUPER DUPER IMPORTANT DE MODIFIER:
Ce bug est corrigé, apparemment. Vous devriez être en mesure d'utiliser le code que j'ai décrit comme "idéal", ci-dessus.