窗体循环全部和检查收音机+选项

问题描述:

我有一个长的形式,并试图让循环完成。但我不知道如何 检查选项(下拉列表)和无线电类型,如果存在,选择选中或选中并将其放入数组中。窗体循环全部和检查收音机+选项

有没有更好的方法来构建它? 当循环完成时,要通过在Ajax发送它的变种?

var parameters = ""; 
var form = document.getElementById("someForm"); 
for(var i = 0; i < form.elements.length; i++){ 
    if(form.elements[i].value) { 
     if(form.elements[i].type == "text" || form.elements[i].type == "select-one" || form.elements[i].type == "hidden") 
      parameters = parameters + '&' + form.elements[i].name+'='+escape(form.elements[i].value); 
     if((form.elements[i].type == "radio" || form.elements[i].type == "checkbox") && form.elements[i].checked) 
      parameters = parameters + '&' + form.elements[i].name+'='+form.elements[i].value; 
    } 
} 

我一般使用这样的事情,如果我需要阿贾克斯形式。 只需将参数附加到ajax请求的末尾即可。

我会看看jQuery does it的方式。具体而言,您需要查看serialize(行6260),serializeArray(行6264)和param(行6784)方法。

根据这个comparison of form serialization在不同的JavaScript库中,jQuery的实现比竞争对手更好地遵守W3C规范。

+0

我会看看在jqeury,感谢您的意见 – Cam 2011-03-01 16:36:11

我同意看jQuery,但也许尝试自己实现一些东西。你可以得到所有的输入/文字区域很容易使用jQuery表单内/选择:

// get all input fields, except buttons 
var inputs = $("form input:not(:button)"); 
// get all dropdowns 
var dropdowns = $("form select"); 
// get all text areas (i.e. "big" textboxes) 
var textareas = $("form textarea"); 

我用这样的事情(我编辑的Sheldon的解决方案第2行):

var parameters = ""; 
var form = document.someForm; 
for(var i = 0; i < form.elements.length; i++){ 
    if(form.elements[i].value) { 
     if(form.elements[i].type == "text" || form.elements[i].type == "select-one" || form.elements[i].type == "hidden") 
      parameters = parameters + '&' + form.elements[i].name+'='+escape(form.elements[i].value); 
     if((form.elements[i].type == "radio" || form.elements[i].type == "checkbox") && form.elements[i].checked) 
      parameters = parameters + '&' + form.elements[i].name+'='+form.elements[i].value; 
    } 
}