2010-04-25 15 views
9

tengo algunos cuadros de texto en un formulario web que tienen ID como esto:jQuery: seleccionar todas las entradas con identificación única (expresiones regulares/comodín selectores)

txtFinalDeadline_1 
txtFinalDeadline_2 
txtFinalDeadline_3 
txtFinalDeadline_4 

En mi jQuery ¿cómo puedo encontrar todos aquellos con el fin de asignarle un valor Antes de tener el guión bajo y todos se llamaban txtFinalDeadline, pude hacerlo y funcionó.

$(this).find("#txtFinalDeadline").val(formatDate); 

Sin embargo, eso fue cuando todos fueron nombrados la misma cosa. Ahora tengo el _x después del nombre y no estoy seguro de cómo asignarle el mismo valor que antes.

Respuesta

6

No sé si puedo garantizar "el fin", pero esto elector debería funcionar:

$(this).find('input[id^=textFinalDeadline_]').val(formatDate);

Incluso entonces, jQuery está optimizado para manejar id s de una manera especial, y puede solo procesar 1 id.

Una mejor manera sería hacer que estos campos de texto utilicen una clase (quizás date) para que pueda usar simplemente el selector '.date'.

+0

Gracias. Eso funcionó. – d3020

6

Existen múltiples maneras de hacer una expresión regular o comodín seleccionar:

El uso de comodines en línea de jQuery selector:

$('#textFinalDeadline_\\S*').val(formatDate); 

actualización:me di cuenta que este método ya no funciona desde jQuery 1.3.2.

Uso de selectores CSS3:

$('input[id^=textFinalDeadline_]').val(formatDate); 

Uso .filter() & match():

$('input').filter(function(){ 
    return this.id.match(/txtFinalDeadline_*/); 
}).val(formatDate); 

Por fin es posible que desee utilizar un regex selector.

$('input:regex(id, txtFinalDeadline_*)').val(formatDate); 
Cuestiones relacionadas