无法验证密码是否为空

时间:2019-06-05 11:57:17

标签: javascript jquery html regex ecmascript-6

我正在验证表单,并且想要在密码无效时显示一条消息,并使用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;
          }
        }

我尝试了所有已知的三种方法来验证输入为空,但仍然无法正常工作。 预先感谢您的帮助。

3 个答案:

答案 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;
          }
        }