我通过jquery验证插件验证我的表单。我面临一个问题,我有一个查询。 fiddle
问题:我已使用addmethod添加自定义验证。它工作正常,但没有显示相关信息。
查询:我必须检查用户输入的用户名是否存在。我在JSON形式的ajax调用后得到响应。前
{"用户名":"存在"}
我制作了另一种客户验证方法。
$.validator.addMethod("specialChar", function(value, element){
return response.username!="exist"
},"{0} already exist");
我的问题是如何在ajax成功后触发此验证
答案 0 :(得分:1)
$('#myform').validate({
onfocusout:function(element){
this.element(element)
},
rules:{
username:{
required:true,
specialChar:true
}
},
messages:{
**"username": {
required: "bhai ye required hai",
specialChar: "bhai ye special bhe mat daal"
}**
}
})
粗体是代码中的更改
并更新了小提琴:http://jsfiddle.net/61pptcb3/3/
答案 1 :(得分:0)
我认为你最好使用special remote
method。它允许您设置ajax请求以验证元素。它确实需要您对服务器设置进行一些小改动,但它使其余部分更容易。
答案 2 :(得分:0)
$.validator.addMethod("specialChar", function (value, element, params) {
var patt = new RegExp(/[^A-z]/g);
return !patt.test(value);
});
$('#myform').validate({
onfocusout: function (element) {
this.element(element)
},
rules: {
username: {
required: true,
specialChar: true
}
}
});
$.extend($.validator.messages, {
required: "My own text.",
specialChar: "special charactor not allow"
});
答案 3 :(得分:0)
添加并显示ajax-loader,同时用户输入用户名。当jQuery ajax调用返回时,隐藏ajax-loader图标并在用户不存在时显示该消息。
jQuery.ajax(url, {complete: function(){}});
致validate the element when the ajax returns use:
$("#myform").validate().element("#i1");
把它放在一起做这个:
$.ajax(url, {complete: function(data){
// truigger validation on ajax complete
$("#myform").validate().element("#i1");
}});