Поле ввода jQuery для доступа по имени [значение] [идентификатор] - PullRequest
2 голосов
/ 18 октября 2010

У меня есть такой HTML-код:

<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

Ответы [ 2 ]

3 голосов
/ 18 октября 2010

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

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

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

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

При этом будут выбраны все элементы <input>, атрибут name которых начинается с field_name.

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

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

$('input[id^=fieldname]').change(func...
1 голос
/ 18 октября 2010

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

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