表格循环所有并检查电台+选项

时间:2011-03-01 13:51:42

标签: javascript ajax

我有一个很长的形式,并尝试完成循环。但我不知道该怎么做 检查选项(下拉列表)和无线电类型(如果存在),选择已选中或已选中并将其放入数组中。

有没有更好的方法来构建它? 当循环完成时,传递var以便在ajax中发送它?

4 个答案:

答案 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;
    }
}