Pet*_*ter 5 validation jquery jquery-plugins jquery-validate
我试图做到以下几点:我有一个与jQuery验证插件验证的一种形式.有一个领域有几个规则:
var validator = $("#myForm").validate({
rules: {
emailForRequest: {
required: true,
email: true,
remote: "'emailcheck.php"
}
} ,
...
Run Code Online (Sandbox Code Playgroud)
现在,当其中一个规则被破坏时,更确切地说是远程规则,我想触发一些额外的代码.因此,如果远程规则返回错误,并且它的错误标签出现在emailForRequest字段旁边,我需要一个回调,在后台执行其他一些操作.
简而言之:我可以看到哪个规则触发了错误,看到它是代码方式我的意思,并附加执行额外的功能吗?
编辑 好的,感谢Liam的回答和更好的阅读手册,我来到这里:
rules: {
emailForRequest: {
required: true,
email: true,
remote: {
url: "'emailcheck.php" ,
type: "post" ,
complete: function(data){
if( data.responseText != "true" ) {
alert("Sorry mate, this email address was registered but never activated!");
}
}
}
}
} , ...
Run Code Online (Sandbox Code Playgroud)
但仍有一个问题.emailcheck.php脚本可以返回3个不同的结果,其中一个是真的,另外两个是依赖于语言的.所以我想发送一个json对象作为响应,其中包含错误类型的var(在所有语言中都相同)和带有消息的var(已转换).所以,在我的完整函数中,我可以检查错误类型并根据它做出响应.很容易,除了它会搞砸我应该出现在我的字段旁边的验证标准错误,我还没有找到解决方案.
小智 7
不确定这个线程是否仍然打开,但是我能够通过addMethod调用解决这个问题,并使用数组来跟踪该表单元素的错误消息.
这是代码
//phone
var phoneStatus = null;
$.validator
.addMethod(
'validatePhone',
function()
{
$.ajax({
url: /path/to/script,
async: false,
dataType: 'json',
data:{ formDataHere},
success: function(data)
{
errorMessages['validatePhone'] = data.message;
phoneStatus = data.status;
},
complete: function(){},
error: function(){}
});
return phoneStatus;
},
function()
{
return errorMessages['validatePhone'];
}
);
Run Code Online (Sandbox Code Playgroud)
感谢 FreekOne 和他的前缀想法,我找到了一个可行的解决方案。我确实说可行,因为我对其清洁度不太满意。由于我不知道验证器中发生了什么,并且修改 dataFilter 和 ajax 调用的成功功能会扰乱验证器的正常工作,因此我得出了以下带有“隐藏”前缀的解决方案:
var validator = $("#myForm").validate({
rules: {
emailForRequest: {
required: true,
email: true,
remote: {
url: "emailcheck.php" ,
type: "post" ,
complete: function(data){
if( data.responseText != true ) {
if( data.responseText.search(/validationErrorTag/) > 0 &&
data.responseText.search(/inactive/) > 0 ) {
inactiveFunctionality();
}
}
}
}
}
} ,...
Run Code Online (Sandbox Code Playgroud)
如果所有内容都检查完毕,则 emailcheck.php 返回 json 编码的 true 或 json 编码的错误消息,例如
<span class="validationErrorTag">inactive</span>This address is not yet activated.
Run Code Online (Sandbox Code Playgroud)
最后,我的 css 文件中有一个条目,以确保前缀不会显示:
.validationErrorTag {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
就像我说的,它有效,我现在将使用它,但使用隐藏的 html 前缀来识别错误消息对我来说似乎有点粗糙。因此,如果有人知道更好的解决方案,请告诉我。