0

単純なパスワード検証に問題があります。

これらは検証が行うことです

  • パスワードが 8 文字未満かどうかを確認する
  • 15文字以上かチェック
  • 新しいパスワードと再入力したパスワードが一致していないかどうかを確認します

2 つのパスワードが一致すると、検証よりも少ない場合でも多い場合でも、フォームが送信されます。

私のコードを見てください:

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>
4

3 に答える 3

0

true関数から必要に応じて (フォームを送信する) または (送信をfalse停止する) のいずれかを返す必要がありonclick="return on_submit('logon');"ますonsubmit="return on_submit('logon');"

于 2013-05-20T03:33:00.293 に答える
0

アラートの発生について言及していないので、フォーム内からボタンを使用してこの関数を呼び出していると思います。この質問で説明されているようにボタンにタイプを設定しない限り、onclick関数に関係なく、フォームが自動的に送信されます:ボタンがフォームを送信しないようにする方法

<input id="logonButton" class="submit"
                    type="button" name="Submit" value="Confirm" tabindex="3"
                    onclick="on_submit('logon')" />
于 2013-05-20T03:14:47.790 に答える
0

送信時にフォームを失敗させたい場合は、検証が失敗したときに false を返してみてください。

        if (strMissingInfo != "") {
            alert(strMissingInfo);
            return false;
        }
于 2013-05-20T03:16:08.223 に答える