2011-08-28 53 views
0

我试图让所有表单元素数组,然后循环使用jquery的$ .each()函数,并在此函数内获取每个元素的ID和标题属性。jquery表单元素到数组

我试过serializeArray(),但我只能得到'name'和'value'属性。

我需要收集所有表单元素的东西,无论它是输入(无论类型),select,textarea,并且不管它是否具有值,都被选中或隐藏。可能类似于$('#form_id')。find('input select textarea'); ?

任何想法如何实现这一目标?

+0

*也许类似'$('#form_id')。find('input select textarea');'?* ...继续尝试。 –

回答

2

用途:

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

它会返回一个包含所有表单元素的NodeList。

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

    } 
); 

<编辑>
请注意:元素 - collecttion也可以包含像字段集或对象元素,请参见:http://www.w3.org/TR/html5/forms.html#category-listed
< /编辑>

+0

太棒了!非常好 - 非常感谢! – user398341

+0

请参阅我的编辑,这可能很重要。 –

+0

这很好 - 这只是为了初始验证(客户端) - 服务器端对所有提交的变量进行了更深入的过滤 – user398341

2

你可以得到与:input伪类的所有表单元素:

var elems = $('#form_id').find(':input'); // changed this line 
+0

是不是只会收集'输入'元素? – user398341

+0

不,这是一个伪类,它匹配所有表单元素(input,select,textarea,everything) – arnaud576875

+0

与上述建议($('#form_id')[0] .elements)相比,它在性能方面如何? – user398341

0

我认为这可能以您想要的方式工作:

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

这将仅匹配直接的孩子 – arnaud576875

+0

使用'find'而不是'children' – Alp