2010-10-18 6 views
2

J'ai un code HTML comme ceci:champ d'entrée d'accès jQuery par nom [valeur] [id]

<input id="fieldname-1" name="field_name[value][1]" value="1" type="checkbox" /> 
<input id="fieldname-2" name="field_name[value][2]" value="2" type="checkbox" /> 
<input id="fieldname-3" name="field_name[value][3]" value="3" type="checkbox" /> 

Je veux y accéder avec jQuery comme:

$('input[field_name]').change(function() { dosomething(); }); 

je ne peux pas ajouter un champ de classe pour ce faire en appelant $('.classname') car il est rendu par le module cck de Drupal et je ne veux pas l'ajouter à la couche de thème. La meilleure chose serait de laisser mon module ajouter une classe pour chaque domaine. mais une solution plus rapide serait de savoir comment accéder à ces champs par jQuery

+0

pourquoi ne pas accéder par id? – jAndy

+0

Parce qu'avec ID, vous ne pouvez accéder qu'à un seul champ. Je veux que ma jquery s'exécute sur plusieurs champs (j'ai oublié de le dire dans ma question) Aussi quand j'ajoute des champs je dois réécrire le code jQuery – FLY

Répondre

3

Vous pouvez utiliser the attribute equals selector pour faire correspondre exactement l'attribut name.

$('input[name="field_name[value][2]"]').change(func... 

Ou si vous vouliez tous les<input> éléments qui commencent par field_name, vous utiliseriez the attribute starts with selector.

$('input[name^=field_name]').change(func... 

Cela permet de sélectionner tous les éléments <input> où l'attribut name commence par field_name.

En outre, vous pouvez utiliser :checkbox dans le sélecteur au lieu de input si elles sont toutes les cases à cocher.

De même, vous pouvez utiliser la même approche mais avec l'attribut ID si vous le souhaitez.

$('input[id^=fieldname]').change(func... 
+0

Thanx! qui a fonctionné pour accéder à tous les articles :) – FLY

+0

@FLY - De rien. : o) – user113716

1

Il semble que vous avez besoin d'un sélecteur flou: [nom^= valeur] Quelque chose comme cela pourrait suffire:

$('[name^=field_name]').each(function(index,element){ 
    $(element).change(function(){}) 
})