Javascript 循环遍历所有表单字段

Javascript 循环遍历所有表单字段,javascript,jquery,forms,Javascript,Jquery,Forms,我有下面的代码,我可以循环遍历所有表单字段,但值仅为第一个字段保存,因此控制台仅显示第一个表单字段值的7次迭代。另一方面,我希望它对所有表单字段逐一进行,以便我可以验证它们。提前谢谢 $('formsection[name="AUDIT REPORT"]').find('input,select').each(function() { hi = []; hi = $('formsection[name="AUDIT REPORT"]').find('input,select').val(

我有下面的代码,我可以循环遍历所有表单字段,但值仅为第一个字段保存,因此控制台仅显示第一个表单字段值的7次迭代。另一方面,我希望它对所有表单字段逐一进行,以便我可以验证它们。提前谢谢

$('formsection[name="AUDIT REPORT"]').find('input,select').each(function() {
  hi = [];
  hi = $('formsection[name="AUDIT REPORT"]').find('input,select').val();
  console.log(hi);

});

首先请注意,选择器中的
form
section
之间应该有一个空格,因为
formsection
不是有效的HTML元素

问题本身是由于在
each()
处理程序函数中使用了相同的选择器。由于生成的jQuery对象包含一个元素集合,因此调用
val()
将只读取集合中的第一个元素。它不会像您期望的那样返回数组

要解决此问题,请使用
this
关键字引用迭代中的当前元素:

$('form section[name="AUDIT REPORT"]').find('input,select').each(function() {
  var hi = $(this).val();
  console.log(hi);
});
还请注意,
:input
选择器也可以满足您的需要,而无需使用
find()


使用
$(this).val()
。是否在此处键入<代码>表单部分?使用
:输入
选择器。我不认为这是一个打字错误,但非常感谢老兄,它成功了。:)我们也有类似的想法:)谢谢你@Rory McCrossan。一个解释得很好的答案总是有帮助的。@SHIKHARSINGH没问题,很乐意帮忙
$('form section[name="AUDIT REPORT"] :input').each(function() {
  var hi = $(this).val();
  console.log(hi);
});