我有一个很长的形式,并尝试完成循环。但我不知道该怎么做 检查选项(下拉列表)和无线电类型(如果存在),选择已选中或已选中并将其放入数组中。
有没有更好的方法来构建它? 当循环完成时,传递var以便在ajax中发送它?
答案 0 :(得分:0)
我会看看jQuery does it的方式。具体来说,您需要查看serialize
(第6260行),serializeArray
(第6264行)和param
(第6784行)方法。
根据不同JavaScript库中的comparison of form serialization,jQuery的实现比竞争对手更符合W3C规范。
答案 1 :(得分:0)
我同意看jQuery,但也许尝试自己实现一些东西。您可以使用jQuery轻松获取表单中的所有输入/ textareas /选择:
// 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");
答案 2 :(得分:0)
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表单,我通常会使用这样的东西。 只需将参数附加到ajax请求的末尾即可。
答案 3 :(得分:0)
我使用了这样的东西(我编辑了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;
}
}