web-dev-qa-db-fra.com

Sélecteur jQuery pour les entrées avec des crochets dans l'attribut name

J'essaie de sélectionner cet élément qui a des crochets dans l'attribut name:

<input type="text" name="inputName[]" value="someValue">

J'ai essayé ceci (qui ne marche pas):

$('input[inputName[]=someValue]')

et ceci non plus:

$('input[inputName&#91;&#93;=someValue]')

ou ca:

$('input["inputName[]"=someValue]')

EDIT: Comme certains d'entre vous l'ont fait remarquer, $('input[inputName=someValue]') ne fonctionnerait jamais. Ce que j'essayais de faire était: $('input[name=inputName][value=someValue]'). (Mais avec [] Dans l'attribut name).

173
aidan

D'après le documentation jQuery , essayez ceci:

$('input[inputName\\[\\]=someValue]')

[EDIT] Cependant, je ne suis pas sûr que ce soit la bonne syntaxe pour votre sélecteur. Vous voulez probablement:

$('input[name="inputName[]"][value="someValue"]')
249
Dancrumb

Vous pouvez utiliser une barre oblique inverse pour citer des caractères "amusants" dans vos sélecteurs jQuery:

$('#input\\[23\\]')

Pour les valeurs d'attributs, vous pouvez utiliser des guillemets:

$('input[name="weirdName[23]"]')

Maintenant, je suis un peu confus par votre exemple; à quoi ressemble exactement votre code HTML? Où la chaîne "inputName" apparaît-elle, en particulier?

edit bogosité fixe; merci @Dancrumb

76
Pointy

La syntaxe de sélecteur d'attribut est [name=value]name est le nom de l’attribut et value, sa valeur.

Donc, si vous voulez sélectionner tous les éléments input avec l'attribut name ayant la valeur inputName[]:

$('input[name="inputName[]"]')

Et si vous voulez vérifier deux attributs (ici: name et value):

$('input[name="inputName[]"][value=someValue]')
51
Gumbo

Si le sélecteur est contenu dans une variable, le code ci-dessous peut être utile:

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]

Dans ce cas, nous préfixons tous les caractères spéciaux avec une double barre oblique inversée.

6
Eric Kigathi

Séparez-le simplement avec des citations différentes:

<input name="myName[1][data]" value="myValue">

JQuery:

var value = $('input[name="myName[1][data]"]').val();
0
slva2000