мы можем получить идентификатор из нескольких элементов с одинаковым именем, используя массив сериализации - PullRequest
3 голосов
/ 27 января 2011

У меня есть форма с тем же именем, но с разными идентификаторами. Я могу сериализировать массив, но не могу получить текущий идентификатор.

<form action="test.php" id="loginform" name="loginform" method="post">
     <input name="title[]" id="title1" type="text" value="" tabindex="1" />
     <input name="title[]" id="title2" type="text" value="" tabindex="2" />
     <input  name="title[]" id="title3" type="text" value="" tabindex="3" />
     <input type="submit" name="submit" value="Submit" id="submit" tabindex="4" />
 </form>

$('#loginform').bind('submit', function() { 
    var elements = $(this).serializeArray();
    $.each(elements, function(i, element) {
        var temp = $('#' + element['name']);
       var name = this.name; alert(name);
 var id = $(this).attr("id");alert(id); 
        (temp.val() == '') ? temp.css({'background': '#FFC4C4', 'border': '1px solid #F00'}) : temp.removeClass('hightlight');
    });
    return false;
});

Я получаю имя, но не идентификатор.....

Демо

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Я думаю Я понимаю ваш вопрос, но я не уверен на 100%.Если мое понимание верно, вы пытаетесь перебрать свои входные данные и получить атрибут ID каждого из них.

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

$('#loginform').submit(function(ev) {
    $('input[type=text]', this).each(function(index, element) {
      alert($(element).attr('id'));
    });
    ev.preventDefault();
});

Итак, быстрое разбиение:

  • Во-первых, $('input[type=text]', this) получает все текстовые входные данные из формы, которую мы отправляем.
  • Затем мы итерируем их, используя .each().
  • Для каждого element мы используем .attr() для получения идентификатора и передаем его в alert() для отображения пользователю.

Обновленная демоверсия

0 голосов
/ 27 января 2011

.serializeArray() вернет только имя и значение каждого объекта.Поэтому итерация по коллекции не даст вам значения.

.serializeArray()

Кодирование набора элементов формы в видемассив имен и значений.

...