Javascript 在输入字段中循环时设置标志
我有一系列多个文本字段和一个文本区域。我在文本字段和文本区域中循环,检查是否有值。如果没有值,我将设置一个标志,显示pass=false。否则,我将设置pass=true,如果所有计算结果都为true,我将触发一个自定义事件。问题在于,因为一个输入字段的计算结果为true,所以即使其中两个字段中没有值,它也会将它们全部计算为true。如果我想这样做,那么我该怎么做,以便所有字段都必须填写,但如果其中一个或两个字段已填写,则仍然设置为pass=false?非常感谢您的帮助 JS Fiddle链接: HTML: 改变 进入 并将其初始化为Javascript 在输入字段中循环时设置标志,javascript,jquery,Javascript,Jquery,我有一系列多个文本字段和一个文本区域。我在文本字段和文本区域中循环,检查是否有值。如果没有值,我将设置一个标志,显示pass=false。否则,我将设置pass=true,如果所有计算结果都为true,我将触发一个自定义事件。问题在于,因为一个输入字段的计算结果为true,所以即使其中两个字段中没有值,它也会将它们全部计算为true。如果我想这样做,那么我该怎么做,以便所有字段都必须填写,但如果其中一个或两个字段已填写,则仍然设置为pass=false?非常感谢您的帮助 JS Fiddle链接:
true
:
$("#submit").on('click', function() {
var pass = true;
(您可能还想先在值上使用。)如果我读对了这篇文章,
pass
将始终获得循环中最后一项的值。哇,谢谢@Blazemonger您的精彩!我有点困惑为什么一开始这不起作用,我想如果我声明var pass,它会自动假定它是真的?我也不完全确定这到底是怎么回事;再次感谢@这是一个逻辑和比较。true&&true=true。true&&false=false和false&&false=false。另一个技巧是使用数字计数器fail并将其初始化为零。每次测试失败时加1,最后测试“失败”是否为非零。
$(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;
$("#submit").on('click', function() {
var pass = true;