我有一个关于jquery验证插件的问题,特别是远程方法。
假设我有一个checkEmail.php
脚本,用于检查数据库的电子邮件地址。我还使用required:true
和email:true
。我想在从服务器获取响应时添加一个微调器,并在完成后隐藏它。
同时,如果服务器的结果是true
,我想在电子邮件字段旁边显示绿色勾号图标。
我使用了以下代码:
$('#form').validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: 'js/ajax/checkEmail.php',
type: 'POST',
data: {
email: function() {
return $('#email').val();
}
},
beforeSend: function() {
//CODE TO SHOW THE SPINNER
},
success:function(output){
//CODE TO HIDE THE SPINNER
if(output == 'true')
{
//SHOW GREEN TICK
}
else
{
//SHOWS THE CUSTOM ERROR FROM SERVER
}
}
}
}
},
messages: {
email: {
required: 'Please enter your email',
email: 'Please enter a valid email address'
}
}
});
假设以下电子邮件地址foo@bar.com
在数据库中。然后,远程方法将返回true
。同时满足required
和email
方法。因此,将显示绿色勾号。
如果我不满意其中一个必需的电子邮件方法,则会自动显示错误消息,但绿色勾号将保留。我试图在.valid()
之后使用.validate()
来检查表单无效的时间,然后删除绿色标记。它不起作用。
if($('#form').valid())
{
//REMOVE GREEN TICK : --> NOT WORKING
}
如果表单无效,我可以做些什么来操纵DOM?换句话说,我怎样才能做到这一点?
提前致谢,
的Christos
答案 0 :(得分:0)
在验证工具的邮件部分中,执行与remote
中的数据相同的操作。做一个函数或一个匿名函数:
function resetCheck(message)
{
// Whatever code you want to use to remove check icon here
$("#checkmark").remove();
// Just return the message
return message;
}
// Messages part of your validation:
...
messages: {
email: {
required: resetCheck('Please enter your email'),
email: resetCheck('Please enter a valid email address')
}
}