Циклическое изменение элементов ввода с помощью jQuery - PullRequest
3 голосов
/ 08 января 2009

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

$("select.mod").change(function(){
    $(this).parent().get(0).$(":input").each(function(i){
    alert(this.name + " = " + i);
  });
});

Ответы [ 2 ]

9 голосов
/ 08 января 2009

Вероятно, проблема связана с выбором "родительской формы".

Функция .parent() возвращает только непосредственного родителя, который не позволит вам получить элемент формы, если ваш select.mod вложен в <p> или что-то еще.

Функция .parents() возвращает all родителей элемента; но первым может быть не тег формы. Я бы попробовал это:

$("select.mod").change(function(){
    $(this).parents('form') // For each element, pick the ancestor that's a form tag.
           .find(':input') // Find all the input elements under those.
           .each(function(i) {
        alert(this.name + " = " + i);
    });
});

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

2 голосов
/ 08 января 2009

Ваша проблема почти наверняка:

.$(":input")

Это не имеет смысла. Вы пытаетесь вызвать метод $(":input") для любого возврата .get(0) ... конечно, такого метода нет!

То, что вы ищете, вероятно, больше похоже на:

$(this).parent().find(":input").each( ... )

Может предложить больше помощи с более подробной информацией. Получаете ошибку? Что такое структура DOM? И т.д.

Лично у меня обычно есть id в моих формах. Так что я бы все прояснил, например:

$('#my_awesome_form :input').each( ... )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...