0

カスタムメソッドでjquery検証を使用しています。どういうわけか、フォームを送信するには2回クリックする必要があります。送信する前にonblurイベントを生成すると、機能します。

フィールドを設定し、検証を含む次のリンクのボタンをクリックします。入力した内容はすべてtrueを返すように設定しましたが、2回クリックしないか、onblurを生成してクリックしないと、フォームを送信できません。私はここで何か間違ったことをしていますか?

http://skoizumi.com/autocomplete/

jQuery.validator.addMethod("contractorName", function (value, element) {
            console.log( '1');
            console.log( element);
            //$('#searchtext').autocomplete('close');

            var result = false;
            var contractorName = $("#searchtext" ).val();

            //validating the specified field has a valid name
            $.ajax({
                type: "GET",
                url: "/autocomplete/testdata.php",
                dataType:"json",
                async: false,                    
                complete: function(){

                },
                success: function(msg)
                {                        
                    console.log( msg);
                    result = true;                         

                }             
            });
            console.log( '2'); 
            return result;
        }, "Specified Contractor doesn't exist");


        $("#myform").validate(
        {
            rules:{
                    searchtext: {
                        contractorName: true    
                    }
            },
            onsubmit: false,
            onkeyup: false
        });
4

2 に答える 2

1

ついに私はなんとか回避策を見つけることができました。どういうわけか、onfocusoutをtrueに設定すると、有効なデータを投稿できません。カスタムメソッドを追加すると、サーバー側をtrue / falseに変更する必要はありませんが、完全な機能を決定できます。http://skoizumi.com/autocomplete/index.html「EuropeanNightjar」と入力すると、エラーが発生してフォームを送信できます。

于 2012-06-19T04:59:40.620 に答える
0

AJAXは非同期であるためresult、メソッドでは常にを返しfalseます。remoteプラグイン の組み込みメソッドを使用します。http://docs.jquery.com/Plugins/Validation/Methods/remote#options

于 2012-06-16T19:27:00.130 に答える