Javascript 为什么jQuery输入值检查器不工作?

Javascript 为什么jQuery输入值检查器不工作?,javascript,jquery,validation,input,Javascript,Jquery,Validation,Input,我需要检查所有输入,看看它们是否已填写,在这种情况下,提交按钮将变为可按下,用户可以安全地提交数据: unfilled = false; $('.add-field').keypress(function(){ $('.add-field').each(function(){ if($(this).val() === ''){ unfilled = true; } else { unfilled = fals

我需要检查所有输入,看看它们是否已填写,在这种情况下,提交按钮将变为可按下,用户可以安全地提交数据:

unfilled = false;
$('.add-field').keypress(function(){
    $('.add-field').each(function(){
        if($(this).val() === ''){
            unfilled = true;
        } else {
            unfilled = false;
        }
    })
    console.log(unfilled);
});

这段代码有效,但有一个奇怪的转折点;当最后一个空输入获得一个字符时,它仍然返回
true
。如果输入获得另一个字符,则只返回
false
。我对此感到困惑,因为据我所知,
.each()
函数是在添加字符并更新输入值后启动的。因此,我不明白它为什么不注册该值

这里的
==
表示它与以下数据类型完全匹配:

if($(this).val() === ''){
将其替换为
==

 if($(this).val() == ''){

这里的
==
表示它与以下数据类型完全匹配:

if($(this).val() === ''){
将其替换为
==

 if($(this).val() == ''){

据我所知,在使用按键事件时,这是一个“问题”,因为浏览器的UI线程尚未更新输入字段的值。因此,当前值仍然为“空”,因此返回
true
;您可以使用KeyUp-事件,也可以尝试以下操作:

据我所知,使用KeyPress-事件时这是一个“问题”,因为浏览器的UI线程尚未更新输入字段的值。因此,当前值仍然为“空”,因此返回
true
;您可以使用KeyUp-事件或尝试以下操作:

您应该在进入循环之前将
未填充的
设置为
false
(但在
KeyUp
内)


在循环中,当一个字段是emty时,您应该只将
未填充的
设置为
真的
,而不要再次将其设置为
假的
,否则您只能知道最后一个字段是否已填充。

在进入循环之前,您应该将
未填充的
设置为
假的


在循环中,当一个字段为emty时,您应该只将
未填充的
设置为
true
,而不要再次将其设置为
false
,否则您只能知道最后一个字段是否已填充。

您可以使用过滤器并使用keyup事件来代替del键:


您可以使用过滤器并使用keyup事件代替del键:


当只更改其中一个字段时,您为什么会觉得需要检查每个
添加字段
?为什么不自己检查一下呢?其他人也会检查自己。当只更改其中一个字段时,你怎么会觉得需要检查每个
添加字段?为什么不自己检查一下呢?其他人也会检查自己。问题中的代码仍然会在循环中设置
未填充
错误
。哦,等等,你删除了循环。。现在我不再关注了:对不起,我正在更新它。我以为我不需要这个环。经进一步调查,我同意。下面是一个JSfiddle,在进入循环之前将
unfilled
设置为
false
不起作用。您应该在循环之前将
unfilled
设置为false,但是在
键控
内!否则,循环第一次运行且缺少值后,
unfilled
将始终为true。问题中的代码仍将
unfilled
设置为
false
在循环内。哦,等等,您删除了循环。。现在我不再关注了:对不起,我正在更新它。我以为我不需要这个环。经进一步调查,我同意。下面是一个JSfiddle,在进入循环之前将
unfilled
设置为
false
不起作用。您应该在循环之前将
unfilled
设置为false,但是在
键控
内!否则,在循环第一次运行且缺少值后,
unfilled
将始终为真。