Selector de jQuery para entradas con corchetes en el atributo de nombre

Resuelto aidan asked hace 14 años • 5 respuestas

Estoy intentando seleccionar este elemento que tiene corchetes en el atributo de nombre:

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

Probé esto (que no funciona):

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

y esto tampoco:

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

o esto:

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

EDITAR: Como algunos de ustedes han señalado, $('input[inputName=someValue]')nunca funcionaría. Lo que estaba tratando de hacer era: $('input[name=inputName][value=someValue]'). (Pero con []el atributo de nombre).

aidan avatar Mar 02 '10 23:03 aidan
Aceptado

Según la documentación de jQuery , intente esto:

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

[EDITAR] Sin embargo, no estoy seguro de que esa sea la sintaxis correcta para su selector. Probablemente quieras:

$('input[name="inputName[]"][value="someValue"]')
Dancrumb avatar Mar 02 '2010 17:03 Dancrumb

Puedes usar una barra invertida para citar caracteres "divertidos" en tus selectores de jQuery:

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

Para los valores de los atributos, puede utilizar comillas:

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

Ahora, estoy un poco confundido por tu ejemplo; ¿Cómo se ve exactamente tu HTML? ¿Dónde aparece la cadena "inputName", en particular?

editar bogosidad fija; gracias @Dancrumb

Pointy avatar Mar 02 '2010 16:03 Pointy

La sintaxis del selector de atributos es [name=value]donde nameestá el nombre del atributo y valueel valor del atributo.

Entonces, si desea seleccionar todos inputlos elementos con el atributo nameque tiene el valor inputName[]:

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

Y si desea verificar dos atributos (aquí: namey value):

$('input[name="inputName[]"][value=someValue]')
Gumbo avatar Mar 02 '2010 16:03 Gumbo

Si el selector está contenido dentro de una variable, el siguiente código puede resultar útil:

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\\]

En este caso, anteponemos a todos los caracteres especiales una doble barra invertida.

Eric Kigathi avatar Dec 11 '2012 05:12 Eric Kigathi