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
将始终为真。