用于验证输入文本字段的单个JavaScript函数

用于验证输入文本字段的单个JavaScript函数,javascript,validation,Javascript,Validation,我正在尝试编写一个函数,可以在将数据提交到Php(通过Ajax)进行处理之前检查输入[文本]是否为空。。。如果输入字段为空(由另一个函数处理),此函数将返回true或false并显示错误消息。函数按预期工作,但当涉及两个字段时,if语句中断。代码如下: const email = document.getElementById('username'); const password = document.getElementById('password'); if(verifyInput(em

我正在尝试编写一个函数,可以在将数据提交到Php(通过Ajax)进行处理之前检查输入[文本]是否为空。。。如果输入字段为空(由另一个函数处理),此函数将返回true或false并显示错误消息。函数按预期工作,但当涉及两个字段时,if语句中断。代码如下:

const email = document.getElementById('username');
const password = document.getElementById('password');

if(verifyInput(email) && verifyInput(password)) {
    console.log('Ready');
}
因此,如果我的电子邮件是空的,那么下一个函数调用verifyInput(密码)将永远不会执行

现在,我通过使用乘法运算找到了一个解决方法:

if(verifyInput(email) * verifyInput(password)) {
      console.log('Ready');
}
我想知道有没有更好的办法


干杯。

和&
逻辑运算符从左到右求值,并且“短路”求值。这意味着,当操作数为
false
时,无论剩余的操作数如何,继续操作都没有意义,结果为
false


使用
&
代替:
验证输入(电子邮件)和验证输入(密码)

您可以尝试以下方法:

if([email,password].map(verifyInput).every(Boolean)){
console.log('Ready');

}
您可以从中获得参考:而且,
*
是一个糟糕的黑客攻击。相反,do
isEmailValid=。。。;isPasswordValid=。。。;如果(isEmailValid&&isPasswordValid)
@Rajesh
&&
短路evaluation@KarelFrajt请检查我最后的评论。我正在创建两个变量来存储有效性,并在条件中使用它。当您的电子邮件为空时,密码不会执行,因为只有当第一个操作为真时,if才会计算第二个操作(使用&&&),如果您切换它们(verifyInput(密码)&&verifyInput(电子邮件)),则您将执行相同的行为,但返回FYI,根据AirBnb指南,按位运算符被视为坏运算符。另外,如果第一个是错误的,不确定这是否也会执行到最后<代码>0和1也是
0
。另外,最好提到的是位运算符返回
0 | 1
作为返回值,而不是
true | false
Yo,我刚刚验证了这一点。使用位运算符也帮助我完成了验证过程。所有函数调用都会执行,如果至少有一个结果返回false,我们就不会进入if块。干杯酷。因此,我重写了verifyInput函数以使用两个参数(输入元素和字符串消息)。新的调用看起来是这样的
if([[email,msgStr['error-missing-field']],[password,msgStr['error-password']]].map(verifyInput).every(Boolean)){console.log(“ready”);}
,并且它可以工作。干杯,伙计@编码117干得好!请考虑把这个标记为答案。请注意,现在
verifyInput
仍采用单个参数,即带有值和消息的数组。这很好,因为如果函数接受多个参数,则很容易被
map
发现。这是因为
map
将当前值作为第一个参数传递,然后是索引,然后是整个数组。考虑这一点:<代码> [1,' 2,' 3 ' ]。map(PARSETIN)< /COM>实际上返回<代码> [ 1,Na,楠] < /代码>。