我目前正在我的新项目中使用带有cakephp的jQuery验证插件。
它完美无缺,直到我需要通过ajax对电子邮件字段进行独特检查以检查数据库..
我不知道如何让插件对来自db的电子邮件进行独特的验证。
感谢名单
答案 0 :(得分:3)
我认为你是指使用AJAX调用(通过插件)来检查服务器的唯一电子邮件,是吗?
我建议使用验证插件的addMethod来创建自定义验证,您可以在其中进行AJAX调用(这将是jQuery核心的一部分)。
有关此主题的SO帖子,您可以探索:
JQuery Validate Plugin - How to create a simple, custom rule?
请注意,您必须自己实施服务器端脚本。
这是另一篇应该有用的文章(使用jQuery和PHP):
Check email already exist – Ajax – Jquery
答案 1 :(得分:1)
语法很简单
$.validator.addMethod("eventName",
function(value, element) {
// condition returns true or false
}, "Error message to display");
});
以
形式调用事件名称<input type="text" name="name" class="eventName" />
如果有任何疑问,请参阅此链接
jQuery Validate Plugin - How to create a simple custom rule?
答案 2 :(得分:1)
如果要检查电子邮件是否唯一,可以使用远程规则。 它来自:http://jqueryvalidation.org/remote-method
示例:制作所需的电子邮件字段,电子邮件并执行远程请求以检查是否已取用指定的地址。
$( "#myform" ).validate({
rules: {
email: {
required: true,
email: true,
remote: "check-email.php"
}
}
});
示例:制作所需的电子邮件字段,电子邮件并执行远程请求以检查是否已获取给定的地址。此外,http方法设置为“发布”,用户名将与电子邮件地址一起发送。
$( "#myform" ).validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $( "#username" ).val();
}
}
}
}
}
});
答案 3 :(得分:0)
尝试类似
的内容 $.validator.addMethod("unique",
function(value, element, params) {
var isUnique = false;
if(value == '')
return isUnique;
id_send= '';
if(params[1] !='')
id_send ='id='+params[1]+'&';
$.ajax({
url: "path"+params[2],
type : 'GET',
async: false,
data: id_send+'field=' + params[0] + "&value=" + value,
dataType: 'json',
cache: true,
success: function(data){
isUnique = data;
}
});
return isUnique;
},
jQuery.validator.format("Value already in use")
);
在上面的代码中:
导致类似:
rules:
{
email: {
required: true,
unique:['email', $('#user_id').val(),'uniqueemail.php'],
email: true
},
PHP uniqueemail.php,在字段电子邮件中搜索值,如果返回为空或ID等于 $('#user_id')的用户.val()所以返回true,否则返回false。
请注意, async 属性设置为 false ,这是一个后退,但是会完成这项工作。