Javascript空字段验证不起作用



我想进行一些空字段输入验证,但它们根本不起作用。我试过使用.length,等于0,等于null,但它们都不起作用。知道为什么吗?这是代码:

if (this.subscriberform.callForward.onBusy) {
console.log(
"MSISDNOnBusy",
this.subscriberform.callForward.msisdnOnBusy
);
if (this.subscriberform.callForward.msisdnOnBusy) {
if (this.subscriberform.profile.starDial.callForward) {
if (
this.subscriberform.callForward.msisdnOnBusy.match(
this.subscriberform.starDial.regex
) === null
) {
this.errorMessageAlert(
"Busy MSISDN does not match call forwarding regular expressions."
);
// console.log(this.errorMessageAlert)
// return;
} 
if (this.subscriberform.callForward.msisdnOnBusy==="" || this.subscriberform.callForward.msisdnOnBusy===null
|| this.subscriberform.callForward.msisdnOnBusy===0 || this.subscriberform.callForward.msisdnOnBusy.length===""
|| this.subscriberform.callForward.msisdnOnBusy.length===0 || this.subscriberform.callForward.msisdnOnBusy.length==null
|| this.subscriberform.callForward.msisdnOnBusy.length==0 || this.subscriberform.callForward.msisdnOnBusy.length==""
|| this.subscriberform.callForward.msisdnOnBusy.length==null || this.subscriberform.callForward.msisdnOnBusy=="" 
|| this.subscriberform.callForward.msisdnOnBusy==null || this.subscriberform.callForward.msisdnOnBusy==0
) {
this.errorMessageAlert(
"Busy MSISDN must not be empty"
);
return;
}
}
}
// else {
//   this.errorMessageAlert("Busy MSISDN must not be empty.");
//   return;
// }
}

这个区块中的一半检查:

if (this.subscriberform.callForward.msisdnOnBusy==="" || this.subscriberform.callForward.msisdnOnBusy===null
|| this.subscriberform.callForward.msisdnOnBusy===0 || this.subscriberform.callForward.msisdnOnBusy.length===""
|| this.subscriberform.callForward.msisdnOnBusy.length===0 || this.subscriberform.callForward.msisdnOnBusy.length==null
|| this.subscriberform.callForward.msisdnOnBusy.length==0 || this.subscriberform.callForward.msisdnOnBusy.length==""
|| this.subscriberform.callForward.msisdnOnBusy.length==null || this.subscriberform.callForward.msisdnOnBusy=="" 
|| this.subscriberform.callForward.msisdnOnBusy==null || this.subscriberform.callForward.msisdnOnBusy==0
)

其实没有什么意思。

假设msisdnOnBusy是一个字符串,在您的示例的一开始,您就有这样的检查:

if (this.subscriberform.callForward.msisdnOnBusy) {

所以它已经是";truthy";,所以你在接近尾声时的大if块永远不会变为真。(https://developer.mozilla.org/en-US/docs/Glossary/Truthy)

由于空字符串被认为是"空字符串";falsy";在js中,msisdnOnBusy包含一些东西——一个简单的console.log()会告诉你什么是

编辑问题"如何更改空字段的验证">

我需要更多地了解你想做什么,callForward是什么,以及msisdnOnBusy是否真的是一个字符串,然后我才能确定。一般来说,您的第一步是确保HTML是正确的。例如,将required属性添加到您的输入中,如:

<input type="text" id="username" name="username" required>

意味着你得到了基本的表单验证,除非填写了username,否则它不会提交。

显然,我们不能信任客户,所以需要一些额外的验证:

const username = document.getElementById('username').value.trim();
if(!username) {
console.error(`No username; show an alert`)
}

在这里,我们获得username输入的值,对其调用trim()以删除任何前导或尾随空白,然后进行检查。

同样,这很可能发生在客户端,因此如果您将其用于任何重要事务,则可能需要对服务器进行额外检查。

您应该能够将其调整为您的示例

相关内容

  • 没有找到相关文章