使用自定义方法进行Jquery验证我无法提交表单

时间:2012-06-16 19:05:30

标签: jquery validation

我正在使用自定义方法进行jquery验证。不知何故,我需要点击两次才能提交表单。如果您在提交之前生成onblur事件则有效。

我在以下链接中设置了一个字段和点击按钮并进行了验证。我设置为返回您输入的任何内容,但如果您不单击两次或生成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
        });

2 个答案:

答案 0 :(得分:1)

最后我设法找到了解决方法。不知何故,当我将onfocusout设置为true时,我无法发布有效数据。通过添加自定义方法,您无需将服务器端更改为true / false,但您可以决定完整的功能。 http://skoizumi.com/autocomplete/index.html如果您输入“欧洲夜鹰”,您可以通过某种错误提交表格。

答案 1 :(得分:0)

AJAX是异步的,因此方法中的result将始终返回false。使用插件的内置remote方法。 http://docs.jquery.com/Plugins/Validation/Methods/remote#options