我有一系列多个文本字段和一个文本区域。我循环遍历文本字段和文本区域并检查是否有值。如果没有值,我会设置一个标记,表示 pass=false。 否则,我会设置 pass=true,并希望在所有结果都为 true 时触发自定义事件。问题在于,由于一个输入字段的计算结果为 true,所以即使其中两个字段没有值,它也会将所有字段计算为 true。如果我想要这样,所有字段都必须填写,但如果填写其中一两个字段,但仍然设置 pass=false ,我该怎么做?非常感谢任何帮助!
JS fiddle 链接:http://jsfiddle.net/YyAjp/12/
HTML:
<form name="headerForm">
<label for="fname">*First Name</label>
<input type="text" class="text" id="fname" name="fname" />
<br/>
<label for="mname">*Middle Name</label>
<input type="text" class="text" id="mname" name="mname" />
<br/>
<label for="fname">*Last Name</label>
<input type="text" class="text" id="lname" name="lname" />
<br/>
<label for="notes">*Notes</label>
<textarea name="notes" /></textarea>
<a href="#" id="submit">Submit</a>
</form>
JQUERY
$(document).ready(function() {
$("#submit").on('click', function() {
var pass;
$("input,textarea,select").each(function() {
if($(this).val() === ''){
pass = false;
$(this).prev('label').css('color','red');
} else {
pass = true;
$(this).prev('label').css('color','black');
}
});
console.log(pass);
if(pass){ alert('trigger custom event') } else { alert('pass failed'); }
});
});
最佳答案
改变
pass = true;
进入
pass = pass && true;
并将其初始化为true
:
$("#submit").on('click', function() {
var pass = true;
http://jsfiddle.net/mblase75/pgM5X/
(您可能还想首先对值使用 $.trim()
。)
关于javascript - 循环输入字段时设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482621/