элементы формы jquery для массива - PullRequest
0 голосов
/ 28 августа 2011

Я пытаюсь получить все элементы формы в массив, а затем перебрать их, используя функцию $ .each () jquery, и внутри этой функции получить идентификатор каждого элемента и атрибуты заголовка.

Я пробовалserializeArray (), но я могу получить только атрибуты 'name' и 'value'.

Мне нужно что-то, что собирает все элементы формы, независимо от того, введен ли он (независимо от типа), select, textarea и независимо от того,имеет значение, проверено или скрыто.

Возможно, что-то вроде $ ('# form_id'). find ('input select textarea');?

Есть идеи, как этого добиться?

Ответы [ 4 ]

3 голосов
/ 28 августа 2011

Вы можете получить все элементы формы с помощью псевдокласса :input:

var elems = $('#form_id').find(':input'); // changed this line
1 голос
/ 28 августа 2011

Использование:

$('#form_id')[0].elements

Возвращает нодлист, содержащий все элементы формы.

jQuery(
  function($)
  {
    $.each($('#form_id')[0].elements,
           function(i,o)
           {
            var _this=$(o);
            alert('id:'+_this.attr('id')+'\ntitle:'+_this.attr('title'));
           })

  }
);


Обратите внимание:сбор данных также может содержать такие элементы, как fieldset или object, см .: http://www.w3.org/TR/html5/forms.html#category-listed

0 голосов
/ 24 мая 2018

Вы можете использовать эту функцию

$.fn.serializeAssoc = function() {
    var formData = {};
    this.find('[name]').each(function() {
        formData[this.name] = this.value;  
    })
    return formData;
};

//And Use it like this

objArr = $('#FormID').serializeAssoc();
0 голосов
/ 28 августа 2011

Я думаю, что это может работать так, как вы хотите:

$('#form_id').children('input, select, textarea')
...