【问题标题】:Why is my code not able to recognize that a password contains characters?为什么我的代码无法识别密码包含字符?
【发布时间】:2016-11-30 20:18:27
【问题描述】:

我正在制作一个登录表单。在提交之前,我会检查所有字段是否填写。我还会检查密码是否超过 7 个字符,并且包含至少一个数字,至少一个字符,并且没有空格。我当前的代码不断告诉我,无论我输入什么,我都缺少一个字符。这是代码:

if($("#password").val()==""){

        error += "The password is required.<br>";   

    }
    else if($("#password").val().length<8){

        error += "Your password needs at least 8 characters.<br>";   

    }
    else if($("#password").val().length >= 8){

        var pass = $("#password").val().split("");

        var hasNum = false;

        var hasChar = false;

        var hasSpace = false;

        for(var i = 0; i < pass.length; i++){

            if(pass[i] == " "){

                hasSpace = true;

            }
            else if(Number(pass[i]) == NaN){

                hasChar = true;

            }
            else if(Number(pass[i]) != NaN){

                hasNum = true;

            }


        }

        if(!hasChar){

            error += "Your password must contain at least one character.<br>";

        }
        if(!hasNum){

            error += "Your password must contain at least one number.<br>";

        }
        if(hasSpace){

             error += "Spaces are not allowed in a password.<br>";   

        }

    }

我首先检查一个空格。然后我检查一个字符是否可以转换为数字。如果不是,那么它必须是一个字符串。如果它可以转换,它必须是一个数字。无论我输入什么,它总是说“您的密码必须包含至少一个字符”。我怎样才能解决这个问题?如果需要,我会给你更多代码。

【问题讨论】:

    标签: javascript php jquery forms passwords


    【解决方案1】:

    问题在于NaN 将不相等(通过 ==、!=、=== 和 !==)与任何其他值(包括另一个 NaN 值)进行比较:

    NaN === NaN;// false
    Number('S') == NaN; //false
    Number(10) == NaN; //false
    

    尝试改用isNaN()。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多