jQuery Zugang Eingabefeld mit Namen [Wert] [id]
Frage
Ich habe einige HTML-Code wie folgt:
<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" />
Das mag ich wie mit jQuery zuzugreifen:
$('input[field_name]').change( function() { dosomething(); });
ich kann nicht eine Klasse Feld hinzufügen, dies zu tun, indem $('.classname')
Aufruf, weil es durch das CCK-Modul von Drupal gemacht wird, und ich möchte nicht, diese Schicht zu dem Thema hinzuzufügen.
Das Beste, was wäre mein Modul eine Klasse für jedes Feld hinzufügen zu lassen. aber eine schnellere Lösung wäre, zu wissen, wie diese Felder durch jQuery zugreifen
Lösung
könnten Sie verwenden der Attributselektor gleich eine genaue Übereinstimmung auf dem name
zu tun Attribut.
$('input[name="field_name[value][2]"]').change(func...
Oder wenn Sie wollen alle die <input>
Elemente, die mit field_name
beginnen, werden Sie das Attribut beginnt mit Wahl .
$('input[name^=field_name]').change(func...
Damit werden alle <input>
Elemente auswählen, wo die name
Attribut beginnt mit field_name
.
Darüber hinaus können Sie :checkbox
im Selektor statt input
verwenden, wenn sie alle Kontrollkästchen sind.
Auch Sie den gleichen Ansatz verwenden können, aber mit dem ID-Attribut, wenn man wollte.
$('input[id^=fieldname]').change(func...
Andere Tipps
Es scheint, dass Sie einen Fuzzy-Selektor müssen: [Name ^ = value] So etwas wie das könnte genügen:
$('[name^=field_name]').each(function(index,element){
$(element).change(function(){})
})