我正在使用自定义方法进行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
});
答案 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