-3

JavaScriptを使用してWebログインフォームでユーザーの入力を確認しようとしていますが、何かが気が狂い、何が悪いのかわかりません。制限:参照。数字は数字である必要があり、郵便番号には数字と文字のみを含めることができます。だから私はこれといくつかの関数を通して入力フィールドの長さをチェックしています。さらに、HTMLフォームとJavaScriptファイル。編集:フィールドに値を入力しなくても、すべての検証方法が失敗し、成功したログインページにリダイレクトされます。

<html>
<form method"POST" id="loginform"  action="thank-you.html">
<table>
    <tr>
<td>  Post Code :  <input id="postcode" type="text"  required="required" /></td>
<td>   Ref. Number :<input id="passw" type="password"  required="required" /></td>
<td> <input type="submit" class="submit"value="Submit"  </td>
    </tr>
</table>
</form>
</html

そしてjavascritコード:

function formValidation() {
    document.getElementById("loginform").onsubmit = function () {
        var uid = document.loginform.postcode;
        var passid = document.loginform.passw;
        if (postcode_validation(uid, 5, 7)) {
            if (passid_validation(passid, 4, 6)) {
                if (alphanumeric(uid)) {
                    if (allnumeric(passid)) {}
                }
            }
        }
    }
    return false;
}

function userid_validation(uid, mx, my) {
    var uid_len = uid.value.length;
    if (uid_len == 0 || uid_len >= my || uid_len < mx) {
        alert("Postcode should not be empty / length be between " + mx + " to " + my);
        uid.focus();
        return false;
    }
    return true;
}

function passid_validation(passid, mx, my) {
    var passid_len = passid.value.length;
    if (passid_len == 0 || passid_len >= my || passid_len < mx) {
        alert("Password should not be empty / length be between " + mx + " to " + my);
        passid.focus();
        return false;
    }
    return true;
}

function alphanumeric(uid) {
    var letters = /^[0-9a-zA-Z]+$/;
    if (uid.value.match(letters)) {
        return true;
    } else {
        alert('postcode must have alphanumeric characters only');
        uid.focus();
        return false;
    }
}

function allnumeric(passid) {
    var numbers = /^[0-9]+$/;
    if (passid.value.match(numbers)) {
        return true;
    } else {
        alert('REf number must have numeric characters only');
        passid.focus();
        return false;
    }
}
window.onload = function () {
    formValidation();
}
4

3 に答える 3

1

送信タグは閉じられていません。Stackoverflowがそこに配置することを強調しているコードを見てください、それは送信タグにありません。

<td> <input type="submit" class="submit"value="Submit"  </td>

する必要があります:

<td> <input type="submit" class="submit" value="Submit" /></td>
于 2013-01-11T23:02:05.183 に答える
0

コードを次のように変更します。

<html>
<form method"POST" onSubmit="return formValidation(this)" id="loginform"  action="thank-you.html">
<table>
    <tr>
<td>  Post Code :  <input name="postcode" id="postcode" type="text"  required="required" /></td>
<td>   Ref. Number :<input name="passw" id="passw" type="password"  required="required" /></td>
<td> <input type="submit" class="submit"value="submit">  </td>
</tr>
</table>
</form>
</html>

と:

function formValidation(theForm) {
    if (postcode_validation(theForm.postcode, 5, 7)) {
        if (passid_validation(theForm.passwd, 4, 6)) {
            if (alphanumeric(this.postcode)) {
                if (allnumeric(theForm.passwd)) {
                    return true;
                }
            }
        }
    }
    return false;
}

この方法では、追加されたパラメーター theForm 内に必要なものがすべて含まれているため、ID で要素を取得する必要はありません。レイアウトに ID を使用しない場合は、ID を完全に削除してください。

于 2013-01-14T13:35:07.487 に答える
0

最も内側のifブロックに最終的なreturnステートメントを追加しようとするかもしれません。

function formValidation() {
    document.getElementById("loginform").onsubmit = function () {
        var uid = document.loginform.postcode;
        var passid = document.loginform.passw;
        if (postcode_validation(uid, 5, 7)) {
            if (passid_validation(passid, 4, 6)) {
                if (alphanumeric(uid)) {
                    if (allnumeric(passid)) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}

これは単純すぎるように思えますが、コードには明らかに欠けています。return ステートメントがないと、Javascript のデフォルトはundefinedになり、フォームが送信されなくなります。

于 2013-01-11T23:22:36.183 に答える