0

我正在使用带有自定义方法的 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
        });
4

2 回答 2

1

最后我设法找到了工作。不知何故,当我将 onfocusout 设置为 true 时,我无法发布有效数据。通过添加自定义方法,您无需将服务器端更改为 true/false,但您可以决定完整的功能。http://skoizumi.com/autocomplete/index.html如果您输入“European Nightjar”,您可以提交表单,否则会出现一些错误。

于 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 回答