2011-07-11 29 views

回答

3

基本的JavaScript ...

var arr = document.forms[0].elements; 
for (var i = 0; i < arr.length; i++) { 
    var el = arr[i]; 
    // do something with it. 
    console.log(el.value) // or similar 
} 
+0

基礎,卻又如此忽視。 – 2011-07-11 20:48:27

+0

也可以注意到表單可以通過名稱訪問:'document.forms ['formName']。elements'' – RobG

+0

@RobG:確實可以,但是這種方法是完全可移植的,不需要知道頁面和/或形式 –

1

你可以看看jQuery.serialize()

這還給一個標準的URL編碼字符串。然而好處是它封裝了獲取所有不同類型的表單元素的值。

+0

我通常downvote使用jQuery時,問題說'只使用Javascript',但我不認爲OP知道區別:) –

+0

需求足夠模糊,我想基於jQuery的解決方案是合理的:) –

+0

jQuery沒有被要求,也沒有序列化,並且已經有一個很好的解決方案。但沒有downvote,我不*這*的意思。 :-) – RobG

0

看一看this。這些人建立了一些只使用純JS並序列化表單的東西。

0

該函數返回與關聯數組中相同的所有表單元素。它還返回所選多個輸入元素的所有值。

 function getFormVals(form) { 
      var values = []; 
      for(var i = 0, len = form.elements.length; i < len; i++) { 
       var input = form.elements[i]; 
       switch (input.type.toLowerCase()) { 
        case "checkbox": 
         values[input.name] = values[input.name] || []; 
         if (input.checked) { 
          values[input.name].push(input.value); 
         } 
         break; 
        case "radio": 
         values[input.name] = values[input.name] || ""; 
         if (input.checked) { 
          values[input.name] = input.value; 
         } 
         break; 
        case "select-multiple": 
         values[input.name] = values[input.name] || []; 
         for (var i = 0, len = input.length; i < len; i++) { 
          if (input[i].selected) { 
           values[input.name].push(input[i].value); 
          } 
         } 
         break; 
        default: 
         values[input.name] = input.value; 
         break; 
       } 
      } 
      return values; 
     } 

用法可能是:

<form onsubmit="var vals = getFormVals(this); alert(vals['myinput']);" > 
    <input type="checkbox" name="myinput" value="ckbx1" /> 
    <input type="checkbox" name="myinput" value="ckbx2" /> 
    <input type="submit" /> 
</form> 
相關問題