我正在验证表单,并且想要在密码无效时显示一条消息,并使用RegExp进行验证(仅当密码不为空时),但我无法验证密码是否为空。 这是我要引用的代码。
const regexPasswd: RegExp = /((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{8,64})/;
const inputPasswd = $(form).find("[name='passwd']");
const passwd;
let allOK = true;
if (inputPasswd.val() !== undefined || inputPasswd.val() !== "" || inputPasswd.val() !== null) {
if (this.regexPasswd.test(<string>inputPasswd.val())) passwd = inputPasswd.val();
else {
message += "Invalid Password<br>";
allOK = false;
}
}
我尝试了所有已知的三种方法来验证输入为空,但仍然无法正常工作。 预先感谢您的帮助。
答案 0 :(得分:2)
在条件中使用&&
(逻辑AND)而不是||
(逻辑OR)并缓存值:
let val = $.trim(inputPasswd.val());
if (val !== undefined && val !== "" && val !== null) {...}
答案 1 :(得分:1)
有人指出您关于||的错误和&&
但是我想指出HTML提供了更简单的解决方案!
首先,您可以添加Required属性。在该字段中没有任何内容的情况下,将无法提交表单。
第二,您可以使用minlength设置所需的最小长度。但是,对于1,这有点多余,因为您需要为此
希望这会有所帮助!
<label for="name">Name (4 to 8 characters):</label>
<form>
<input type="text" id="name" name="name" required
minlength="1" maxlength="12" size="12">
<input type="submit" value="test">
答案 2 :(得分:-1)
简单地写
const regexPasswd: RegExp = /((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{8,64})/;
const inputPasswd = $(form).find("[name='passwd']");
const passwd;
let allOK = true;
if (!inputPasswd.val().length == 0 || inputPasswd.val() )
{
// if value length is non-zero or non-undefined or non-null
if (this.regexPasswd.test(<string>inputPasswd.val())) passwd = inputPasswd.val();
else {
message += "Invalid Password<br>";
allOK = false;
}
}