我正在尝试使用jQueryValidation:remote for meteor javascript函数来验证注册表单上的电子邮件。
Javascript验证:
$("#register-form").validate({
rules: {
email: {
required: true,
email: true,
// remote: don't know what to do
}
},
messages: {
email: {
required: "Please enter your email",
remote: "Please enter another one. This email is already exist"
},
}
//...
});
流星功能:
Template.tmp_signup.events({
'change #inpSignupEmail': function () {
if (typeof console !== 'undefined') {
var data = document.getElementById("inpSignupEmail").value;
var findOut = UserCustomer.find({Email: data});
if (findOut.fetch().length > 0) {
console.log("this email is already exist. too bad");
}
else {
console.log("this is a new email!");
}
}
},
}
到目前为止,我的'change #inpSignupEmail
'功能正常,但当然,我得到的只是一个控制台日志:“这封电子邮件已经存在。太糟糕了。”
是否可以将我的javascript函数用于jQueryValidation:remote?
谢谢。
答案 0 :(得分:0)
您不能将remote
与JavaScript一起使用,因为remote
用于远程检查服务器上的内容并阅读回复。
相反,您必须使用the plugin's addMethod()
method编写包含其他JavaScript的规则。
像这样的东西,虽然我假设你的流星功能已经正常工作......
jQuery.validator.addMethod("myMeteor", function(value, element) {
Template.tmp_signup.events({
'change #inpSignupEmail': function () {
if (typeof console !== 'undefined') {
var data = value; // 'value' argument represents the value of your input
var findOut = UserCustomer.find({Email: data});
if (findOut.fetch().length > 0) {
return false; // fails - display error
}
else {
return true; // passes - no message
}
}
}
}
}, "this email is already exist. too bad");
在.validate()
...
$("#register-form").validate({
rules: {
email: {
required: true,
email: true,
myMeteor: true
}
}, ......
答案 1 :(得分:0)
在弄乱了@Sparky使用addMethod()
的答案后,我发现这个代码片段在我的案例中运行得很漂亮:
jQuery.validator.addMethod("myMeteor", function (value, element) {
if (typeof console !== 'undefined') {
var data = value; // 'value' argument represents the value of your input
var findOut = UserCustomer.find({Email: data});
if (findOut.count() > 0) {
return false; // fails - display error
}
else {
return true; // passes - no message
}
}
});
P.S。:感谢@Sparky的想法。