2017-04-21 59 views
1

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

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

}); 
+0

使用'$(this).val()'。 – Tushar

+0

有错字吗? '表格部分'?使用':input'选择器。 – Tushar

+0

我不认为这是一个错字,但感谢很多老兄它的工作。 :) –

回答

2

首先注意,应在选择formsection之间的空间,因为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()

$('form section[name="AUDIT REPORT"] :input').each(function() { 
    var hi = $(this).val(); 
    console.log(hi); 
}); 
+2

我们认为同样:) – Tushar

+0

Thankyou @Rory McCrossan.A很好解释答案总是有帮助。 –

+0

@SHIKHARSINGH没问题,很乐意帮忙 –