2011-08-28 44 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