我有以下代码,我可以循环遍历所有表单字段,但是只为第一个表单保存值,因此控制台仅显示第一个表单字段值的7次迭代。另一个我想让它一个接一个地出现在所有表单字段中,以便我可以验证它们。提前谢谢。
$('formsection[name="AUDIT REPORT"]').find('input,select').each(function() {
hi = [];
hi = $('formsection[name="AUDIT REPORT"]').find('input,select').val();
console.log(hi);
});
答案 0 :(得分:2)
首先请注意,选择器中form
和section
之间应该有一个空格,因为formsection
不是有效的HTML元素。
问题本身是由于在each()
处理函数中使用了相同的选择器。由于生成的jQuery对象包含Elements的集合,因此调用val()
将只读取集合的第一个元素。它似乎没有像你期望的那样返回一个数组。
要解决此问题,请使用this
关键字来引用迭代中的当前元素:
$('form section[name="AUDIT REPORT"]').find('input,select').each(function() {
var hi = $(this).val();
console.log(hi);
});
另请注意,:input
选择器也可以满足您的需求,而无需使用find()
:
$('form section[name="AUDIT REPORT"] :input').each(function() {
var hi = $(this).val();
console.log(hi);
});