0

入力のみが PO である Web ページがあります。彼らは PO を入力する必要があり、文字、数字、ダッシュ、アンダースコア、および/またはピリオドを含み、長さが 2 ~ 15 文字である必要があります。継承したコードですべてが機能していると思います(jQueryは初めてです)。

ただし、これらのテストすべてに合格した場合は、データベースに対してリモート テストを実行して、ユーザーの会社がその PO を既に使用しているかどうかを確認する必要もあります。もしそうなら、私は彼らに警告し、別の値を入力するか、入力した値を送信するかを選択できるようにする必要があります。これは私が立ち往生しているところです。

$(document).ready(function(){
$.validator.addMethod("noSpecialChars", function(value, element) {
    return this.optional(element) || /^[a-zA-Z0-9-_.]+$/i.test(value);
}, "Ignored");

jQuery.validator.messages.required = "";
$("#form1").validate({
    invalidHandler: function(e, validator) {
        var errors = validator.numberOfInvalids();

        if (errors) {
            var message = errors == 1
                ? 'PO must contain only letters, numbers, dashed, underscores or periods and must be between 2 and 15 characters long.'
                : 'You missed ' + errors + ' fields.  They have been highlighted below';
            $("div.productError span").html(message);
            $("div.productError").show();
        } else {
            $("div.productError").hide();
        }
    },

    onkeyup: false,
    submitHandler: function(form) {
        $("div.productError").hide();
        form.submit();
    },

    rules: {
        po_number: {
            required: true,
            noSpecialChars: true,
            rangelength:[2,15]
        }
    },

    messages: {
        po_number: {
            required: 'blah',
            noSpecialChars: 'blah',
            rangelength: 'blah'
        }
    },
    debug:true
});

});

4

2 に答える 2

0

今、私にははるかに明確です。

あなたのコメントを考慮し、ドキュメントを少し読んで、フォームの 2 番目の検証を呼び出すことをお勧めし.submitHandlerます。

ドキュメントを見ると、そのコールバックは、フォームが実際に有効な場合、つまりチェックが true を返した後にのみ呼び出されます。次に、フォームを送信する前に別のチェックを実行し、それが true を返す場合はフォームを送信します。それ以外の場合は、クライアントに言う必要があるものは何でもポップアップします.

ドキュメントから:

フォームが有効な場合に実際の送信を処理するためのコールバック。唯一の引数としてフォームを取得します。デフォルトの submit を置き換えます。検証後に Ajax 経由でフォームを送信するのに適した場所。

2 番目の太字部分は、あなたのコードに少し疑問を抱かせます...フォームを再度送信したようで、別の検証に渡されます。その部分を間違えたのかもしれません。もしそうなら、私はお詫び申し上げます。

于 2012-08-09T16:38:22.150 に答える
0

jquery バリデータ プラグインを使用している場合は、リモート メソッドを使用して簡単に行うことができます。

于 2012-08-09T16:41:22.207 に答える