javascript中的验证不是验证函数

validation in javascript is not validating the function

本文关键字:验证 函数 javascript      更新时间:2023-09-26

我正在验证一个表单,该表单对必填字段、字符、数字、电子邮件、密码格式和字段长度进行了验证。

在我的代码中,必填字段和长度有效,但其余有效。

密码格式的JavaScript代码:

function CheckPassword(paswd) {
    var submitFlag = false;
    var paswd = /^(?=.*[0-9])(?=.*[!@#$%^&*_])[a-zA-Z0-9!@#$%^&*]{7,15}$/;
    if (document.reg_indi_form.pswd.length > 0) {
        if (!document.reg_indi_form.pswd.value.match(paswd)) {
            submitFlag = true;
            document.getElementById('i3').innerHTML = "Use atleast one digit,character,specialCharacter";
            document.getElementById('i3').style.color = "red";
            document.getElementById('i10').style.fontSize = "12px";
            //return false;  
        }
    }
    return submitFlag;
}
function alls() {
    var valid = true;
    valid *= req();
    valid *= validateUname();
    valid *= CheckPassword(this);
    valid *= num();
    valid *= confirm_pswd();
    valid *= namevalid();
    valid *= ValidateEmail(this);
    return valid ? true : false;
}

我在onSubmit上呼叫alls()
所有其他不起作用的功能与checkPassword()类似。

HTML代码:

<form name="reg_indi_form" method="post" onSubmit="return alls()" enctype="multipart/form-data" >
    <table height="100" width="1000">
        <tr>
            <td>
                First Name<font color="#FF0000">*</font>: 
             </td>
             <td>
                 <input name="txt_fnm" type="text" id="txt_fnm"/> <label id="i"></label>
            </td>
        </tr>
        <tr>
            <td>
                Password<font color="#FF0000">*</font>: 
            </td>
            <td>
                <input type="password" name="pswd" id="pswd"/><label id="i3"></label>
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" name="submit" value="Submit"/>
            </td>
            <td>
                <input type="reset" name="reset" value="Reset"/>
            </td>
        </tr>
    </table>
    </form>

考虑密码正确时CheckPassword()返回true。

现在,在CheckPassword()函数document.reg_indi_form.pswd.value.match(paswd)中,如果模式匹配,则此语句将返回true。您已经添加了!,这意味着当密码和给定的模式不匹配时,它将返回true。我已经编辑了下面的函数,还考虑使用布尔运算符,而不是尽可能使用多个/嵌套的if语句。您没有任何id为i10的字段,我认为它应该是i3

function CheckPassword() {
    var submitFlag = false;
    var paswd = /^(?=.*[0-9])(?=.*[!@#$%^&*_])[a-zA-Z0-9!@#$%^&*]{7,15}$/;
    if ((document.reg_indi_form.pswd.length > 0) && (document.reg_indi_form.pswd.value.match(paswd))) {
        submitFlag = true;
    }
    else{
        document.getElementById('i3').innerHTML = "Use atleast one digit,character,specialCharacter";
        document.getElementById('i3').style.color = "red";
        document.getElementById('i3').style.fontSize = "12px";
    }
    return submitFlag;
}

最后,为什么在alls()函数中对布尔值使用*=运算符?您应该使用布尔运算符。此外,this将当前窗体或字段对象传递给函数,在这种情况下不需要它,因为您正在使用document.formName.fieldName访问窗体的字段。此外,末尾的三元(bool?value1:value2)运算符也是不必要的。

function alls() {
    var valid = req()
    && validateUname()
    && CheckPassword()
    && num()
    && confirm_pswd()
    && namevalid()
    && ValidateEmail();
    return valid;
}