0

私はまだこれについて混乱しています。JQuery の学習を開始してから約 1 週間が経過しました。これが私が持っているものです。

var IsValidUserName = false;

$(document).ready(function () {
    $('#txtUserName').blur(function () {

  if ($('#txtUserName').val().match(isNumberLetter) && 
($('#txtUserName').val().length >= 8)) {

            $('#userNameError').removeClass("error").addClass("default");
            $('#txtUserName').removeClass("alert");
            $('#txtUserName + label').removeAttr("id", "lblUserName");
            IsValidUserName = true;
        }
        else {
            $('#userNameError').removeClass("default").addClass("error");
            $('#txtUserName').addClass("alert");
            $('#txtUserName + label').attr("id", "lblUserName");
        }
    });
});

上記のような別の関数があるとしましょう。 FirstNameとしましょう:

送信イベントでこれを呼び出すにはどうすればよいですか? ユーザーがフィールドを離れたときに、必要に応じてコードが機能します。入力されたデータが無効な場合に、このコードを呼び出して上記の変数を使用して送信を防ぐ方法もわかりません。

ユーザーが送信ボタンをクリックした場合は上記の検証を呼び出し、IsValidUserName変数がの場合は送信を停止する必要がありますfalse

少しプッシュする必要があります。

ありがとう、友よ。

4

1 に答える 1

2

無名関数の代わりにいつでも関数に抽出し、チェックしたいオブジェクトへの参照を渡すことができます。これにより、他の要素に再利用できるという追加の利点が得られます。

function validate(ele) {
    var valid;

    if (ele.val().match(isNumberLetter)) && (ele.val().length >= 8)) {
        valid = true;

        // update user here.
    } else {
        valid = false;

        // update user here.
    }

    return valid;
}

$(function(){
    $('#firstName').blur(function(){ validate($(this)); });
    $('#lastName').blur(function(){ validate($(this)); });

    $("yourFrom").submit(function(){
        var firstNameIsValid = validate($('#firstName'));
        var lastNameIsValid = validate($('#lastName'));

        if (!nameIsValid) && (!lastNameIsValid) {
            return false;
            // User has already been updated
        }
    });
});

また、検証に JavaScript を多用しているため (これが便利であり、唯一のセキュリティではありません)、フォームが適切な要件を満たすまで送信ボタンを完全に無効にすることもできます。

于 2013-06-23T05:23:51.920 に答える