JavaScript错误中的密码验证

时间:2013-05-20 03:06:32

标签: javascript html

我在使用简单的密码验证时遇到了问题。

这些是验证所做的事情

  • 检查密码是否少于8个字符
  • 检查是否超过15个字符
  • 检查新密码和重新输入的密码是否不匹配

即使小于或大于验证

,表单也会在两个密码匹配时提交

请参阅我的代码:

function on_submit(dest) {

    var objForm = document.LogonForm;
    var strMissingInfo = "";

    if (dest == 'logon') {

        if (objForm.current.value != "") {

            if (objForm.new1.value.length < 8 || objForm.new1.value.length > 15) {
                strMissingInfo += "\n   Password must be 8 to 15 characters long";

            } else if (objForm.retype.value != objForm.new1.value) {
                strMissingInfo += "\n   Password mismatch!";

            }

            if (strMissingInfo != "") {
                alert(strMissingInfo);

            } else {
                alert(strMissingInfo);
                objForm.action.value = dest;
                objForm.submit();
            }
        }
    }
}

--- HTML部分

<input type="password" id="current" name="current"
                                onKeyPress="return isNumberKey(event)" style="width: 180px"
                                tabindex="1" required/>

<input type="password" id="new1" name="new1"
                                onKeyPress="return isNumberKey(event)" style="width: 180px"
                                tabindex="2" required />

<input type="password" id="retype" name="retype"
                                onKeyPress="return isNumberKey(event)" style="width: 180px"
                                tabindex="3" required />

<a href="javascript:;">
                    <input id="logonButton" class="submit"
                        type="submit" name="Submit" value="Confirm" tabindex="4"
                        onclick="on_submit('logon')" />
                    </a>

3 个答案:

答案 0 :(得分:0)

由于您没有提及发生的警报,我的猜测是您使用表单内的按钮调用此函数。除非您按照此问题中的说明在按钮上设置类型,否则无论onclick功能如何,都会自动提交表单:How to prevent buttons from submitting forms

<input id="logonButton" class="submit"
                    type="button" name="Submit" value="Confirm" tabindex="3"
                    onclick="on_submit('logon')" />

答案 1 :(得分:0)

如果您希望表单在提交时失败,请在验证失败时返回false。

        if (strMissingInfo != "") {
            alert(strMissingInfo);
            return false;
        }

答案 2 :(得分:0)

您需要从函数中返回true(提交表单)或false(停止提交),并使用onclick="return on_submit('logon');" - 或者甚至更好地删除它并将onsubmit="return on_submit('logon');"放在表单上。