2010-10-18 5 views
2

У меня есть некоторые HTML-код, как это:JQuery вход доступа к полю по имени [значение] [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" /> 

Я хочу получить доступ к этому с JQuery, как:

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

я не могу добавить поле класса, чтобы сделать это, вызвав $('.classname'), потому что он отображается с помощью cck-модуля Drupal, и я не хочу добавлять его в слой темы.

Лучше всего, чтобы мой модуль добавлял класс для каждого поля. но более быстрым решением было бы узнать, как получить доступ к этим полям jQuery

+0

почему не могут получить доступ по идентификатору? – jAndy

+0

Потому что с идентификатором вы можете получить доступ только к одному полю. Я хочу, чтобы мой jquery запускался на нескольких полях (забыл сказать, что в моем вопросе) Также, когда я добавляю поля, мне нужно переписать код jQuery – FLY

ответ

3

Вы можете использовать the attribute equals selector для точного соответствия атрибуту name.

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

Или, если вы хотите все в <input> элементы, которые начинаются с field_name, вы будете использовать the attribute starts with selector.

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

Это позволит выбрать все элементы <input> где атрибут name начинается с field_name.

Кроме того, вы можете использовать :checkbox в селекторе вместо input, если все они установлены.

Кроме того, вы можете использовать тот же подход, но с атрибутом идентификатора, если хотите.

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

Thanx! который работал для доступа ко всем предметам :) – FLY

+0

@FLY - Добро пожаловать. : О) – user113716

1

кажется, что вам нужно нечеткий селектор: [имя^= значение] Нечто подобное могло бы хватить:

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