2010-04-25 13 views
9

Ho alcune caselle di testo su un modulo web con ID come questo:jQuery: selezionare tutti gli ingressi con l'identificazione unica (regex/jolly selettori)

txtFinalDeadline_1 
txtFinalDeadline_2 
txtFinalDeadline_3 
txtFinalDeadline_4 

Nel mio jQuery come faccio a trovare tutte quelle al fine di assegnare un valore a loro. Prima che avessi il carattere di sottolineatura e tutti si chiamavano txtFinalDeadline, avrei potuto farlo e ha funzionato.

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

Tuttavia, quello era il momento in cui venivano tutti denominati la stessa cosa. Ora ho il _x dopo il nome e non sono sicuro di come assegnare loro lo stesso valore di prima.

risposta

6

Non so se posso garantire "in ordine", ma questo elettore dovrebbe funzionare:

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

Anche allora, jQuery è ottimizzato per gestire id s in un modo speciale, e può solo processo 1 id.

Un modo migliore sarebbe avere questi campi di testo utilizzare una classe (forse date) in modo da poter utilizzare semplicemente il selettore '.date'.

+0

Grazie. Questo ha funzionato. – d3020

6

Ci sono diversi modi per fare una regex o jolly selezionare:

Utilizzando i caratteri jolly in linea del selettore jQuery:

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

aggiornamento:Ho notato che questo metodo non funziona più dal jQuery 1.3.2.

Uso selettori CSS3:

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

Uso .filter() & match():

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

Finalmente si potrebbe desiderare di utilizzare un regex selector.

$('input:regex(id, txtFinalDeadline_*)').val(formatDate); 
Problemi correlati