2010-04-25 11 views
9

J'ai quelques champs de saisie sur un formulaire en ligne qui ont ids comme ceci:jQuery: sélectionner toutes les entrées avec identifiant unique (Regex/Wildcard Selectors)

txtFinalDeadline_1 
txtFinalDeadline_2 
txtFinalDeadline_3 
txtFinalDeadline_4 

Dans mon jQuery comment puis-je trouver tous ceux pour leur attribuer une valeur. Avant j'avais le trait de soulignement et ils étaient tous nommés txtFinalDeadline je pouvais le faire et ça a marché.

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

Cependant, c'était quand ils ont tous été nommés la même chose. Maintenant j'ai le _x après le nom et je ne suis pas sûr de savoir comment attribuer la même valeur qu'auparavant.

Répondre

6

Je ne sais pas si je peux garantir « pour », mais cet électeur devrait fonctionner:

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

Même alors, jQuery est optimisé pour gérer id s d'une manière particulière, et peut seulement traiter 1 id.

Un meilleur moyen serait d'avoir ces champs de texte utiliser une classe (peut-être date) de sorte que vous pourriez simplement utiliser le sélecteur '.date'.

+0

Merci. Cela a fonctionné. – d3020

6

Il y a plusieurs façons de le faire une expression régulière ou générique sélectionner:

Utilisation des caractères génériques inline de sélecteur jQuery:

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

mise à jour:J'ai remarqué que cette méthode ne fonctionne plus depuis jQuery 1.3.2.

Utilisation des sélecteurs CSS3:

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

Utilisation .filter() & match():

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

Enfin, vous pouvez utiliser un regex selector.

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