JQuery Validation Plugin:使用自定义Ajax方法
如果可能的话,寻找Jquery表单validation插件的一些帮助。
我通过对我的数据库进行ajax调用来validation模板的电子邮件字段,该数据库检查电子邮件字段中的文本当前是否在数据库中。
// Check email validity on Blur $('#sEmail').blur(function(){ // Grab Email From Form var itemValue = $('#sEmail').val(); // Serialise data for ajax processing var emailData = { sEmail: itemValue } // Do Ajax Call $.getJSON('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc?method=getAdminUserEmail&returnFormat=json&queryformat=column', emailData, function(data){ if (data != false) { var errorMessage = 'This email address has already been registered'; } else { var errorMessage = 'Good' } }) });
我想做的是将这个调用加入到我的JQuery Validation Plugin的规则中……例如
$("#setAdminUser").validate({ rules:{ sEmail: { required: function(){ // Replicate my on blur ajax email call here } }, messages:{ sEmail: { required: "this email already exists" } });
想知道是否有实现这个目标? 非常感谢
你正在做一个AJAX请求,ergo:当你的自定义validation器返回true或false时,validation已经完成。
您将需要使用异步。 另请参阅此文章: 如何让jQuery执行同步而非异步的Ajax请求?
假设我们有一个自定义validation来检查Unique Mobile,所以我们将添加一个新方法,以检查unqiue Mobile no:
jQuery.validator.addMethod("uniqueMobile", function(value, element) { var response; $.ajax({ type: "POST", url: , data:"mobile="+value, async:false, success:function(data){ response = data; } }); if(response == 0) { return true; } else if(response == 1) { return false; } else if(response == 'logout') { return false; } }, "Mobile is Already Taken");
您可以添加这样的自定义validation方法
$.validator.addMethod('unique', function(value) { $.get('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc','?method=getAdminUserEmail&returnFormat=json&queryformat=column&emailData='+ value, function(return_data) { return return_data; }) } , "this email already exists" );
然后将unique
类添加到您的电子邮件字段,或者您可以使用类似的东西
$.validator.addClassRules("unique-email", { unique: true });
试试这个:
$.validator.addMethod('unique', function(value) { var result = $.ajax({ async:false, url:"http://yoursamedomain.com/checkemail", data:'email='+ value, dataType:"text" }); if(result .responseText) return true; else return false; } , "This email address has already been registered");
对于服务器端AJAXvalidation,请使用remote
规则。 这与标准的jQuery AJAX请求对象相同。 您的服务器必须返回字符串“true”表示有效值或“false”表示无效,也可以传递一些字符串“此电子邮件已被删除”,这将被视为无效,并呈现为错误消息:
$( "#myform" ).validate({ rules: { email: { required: true, email: true, remote: { url: "check-email.php", type: "post", data: { username: function() { return $( "#username" ).val(); } } } } } });
在这里阅读文档remote-method