我是jquery的新手。我一直在研究,并且在使用query.validate.min.js在ajax加载之前尝试验证电子邮件地址时遇到了麻烦。
我想验证表单,如果输入有效,则只调用app.ajax.load。无论我在ajax加载之前放置什么条件,表单仍然在没有验证的情况下发布也忽略了我的打回来。 (这是“谢谢”消息)
有人可以帮我解决这个问题,还是我需要写一个单独的函数来验证?
$('#emailsignup_form').validate({
rules: {
email: {
required: true;
email:true
}
},
messages: {
email: "Invalid Email",
},
submitHandler: function(form){
app.ajax.load({
reqName : 'emailSubmit',
url: '$httpUrl('Bronto-OptIn')$?email=' + $('#email').val(),
selector : '#emailbox',
callback: function(responseText, textStatus) { }
});
return false;
});
});
<form id="emailsignup_form" name="emailsignup_form" method="post" action="$httpUrl('Bronto-OptIn', 'fid', 'information')$">
<div class="fl"><input class="email-signup-input" type="text" title="Enter Your Email Address" value="Enter Your Email Address" name="email" id="email" /></div>
<div class="fl"><button class="email-signup-btn" value="Submit" name="submitemail" id="submitemail">Submit</button></div>
</form>
答案 0 :(得分:2)
当input
name
被称为"email"
时,分配rule
"email"
email
会很危险。从技术上讲它会起作用,但正如你在下面看到的那样,它可能会导致很大的混乱。示例:messages:
中的input
是否应分配给名为email
的{{1}},还是rule
的{{1}}?< / p>
您的email
和rules
...
messages
应该是......
rules: {
email: {
required: true; // <-- semicolon incorrect, must be a comma
email:true
}
},
messages: {
email: "Invalid Email", // <-- should define a message for each corresponding rule
},
您的 rules: {
email: { // the field name
required: true,
email: true // the rule
}
},
messages: {
email: { // the field name
required: "this is required",
email: "Invalid email" // the rule's message
}
},
格式错误......
submitHandler:
应该更像这样(假设你的ajax功能是正确的)......
submitHandler: function (form) {
app.ajax.load({
reqName: 'emailSubmit',
url: '$httpUrl('Bronto - OptIn')$?email=' + $('#email').val(),
selector: '#emailbox',
callback: function (responseText, textStatus) {}
});
return false;
}); // <-- this is not correct
<强>演示:强>