如何使用混合类型的jquery从表单中获取所有元素和值

时间:2011-09-15 22:17:58

标签: javascript jquery html

我知道如何使用带有“.each”方法的jquery在一个单独的数组中获取所有表单元素及其值。 如果我提醒:输入[type:text]元素值我可以看到它们 - 但如果我想提醒这个相同数组中任何复选框的值,它总是显示“on”。

以某种方式可以将形式的内容元素:1)放在一个数组中,+ 2)它显示了textfields的值和复选框的选中状态?

我希望能够遍历此表单元素数组并验证数据,但我无法确定此混合数组中复选框的已检查状态。

希望它不会太混乱 问候

5 个答案:

答案 0 :(得分:3)

你看过.serializeArray()了吗?我认为这可能正是您正在寻找的。

答案 1 :(得分:2)

跳过jQuery并使用DOM。表单中有一个方便的elements属性,其中包含表单中的所有表单控件(输入,选择,按钮等)。使用每个元素的typetagName属性来区分它们,并使用复选框和单选按钮的布尔checked属性来查看它们是否被选中。这些东西在所有发布的主要脚本浏览器中都能很好地运行。

琐碎的例子:

var els = form.elements;
for (var i = 0, len = els.length; i < len; ++i) {
    if (els[i].tagName == "INPUT") {
        if (els[i].type == "checkbox" || els[i].type == "radio") {
            alert("Checked: " + els[i].checked);
        } else {
            alert("Value: " + els[i].value);
        }
    }
}

答案 2 :(得分:1)

尝试使用.checked而不是.value。这会给你一个真实/错误的状态。

当您遍历列表时,请检查element.type以确定如何处理它。例如,

if (element.type == "checkbox") {
  //use element.checked
} else {
  //use element.value
}

答案 3 :(得分:1)

看看这个,看看这是怎么做的:

http://jsfiddle.net/VNPsj/

您将能够看到每个输入文本和复选框的值。我把它们放在警报中,但你可以将它们分配给变量或任何你想要的东西。不可思议的是,jQuery Selector(我使用的参考文献的参考文献:http://api.jquery.com/multiple-attribute-selector/)允许您抓取表单的选定部分。

要获取复选框的“值”,您需要检查$(this).attr('checked')方法的值,而这是您正在迭代的当前复选框元素。

答案 4 :(得分:0)

如果您只是想从表单中获取数据,那么请使用.serializeArray作为Rusty提到的。但是,如果您尝试执行此操作以进行表单验证,那么您可能更适合实现jQuery Validate插件。