窗体循环全部和检查收音机+选项
问题描述:
我有一个长的形式,并试图让循环完成。但我不知道如何 检查选项(下拉列表)和无线电类型,如果存在,选择选中或选中并将其放入数组中。窗体循环全部和检查收音机+选项
有没有更好的方法来构建它? 当循环完成时,要通过在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规范。
答
我同意看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;
}
}
我会看看在jqeury,感谢您的意见 – Cam 2011-03-01 16:36:11