单击表单提交按钮时,将调用验证所有字段的函数。但是,如果验证失败,则不会发生任何事情。
我使用mailto:
作为我的行动,这会有所作为吗?
我想澄清两件事:
这是单击提交按钮时调用函数的正确方法吗?
$(document).ready(function(){
$('#contactForm').submit(function(){
checkMail();
});
});
即使我正在使用mailto:
,我仍然可以验证字段吗?
以下是代码的其余部分:
function checkEmail(){
var email = document.contact.email.value;
if(email == "") {
document.getElemtById("email_error").innerHTML = "No Email Address";
return false;
}
else {
document.getElementById("email_error").innerHTML = ""
return true;
}
}
HTML:
<form name="contact" action="mailto:exampleemail@hotmail.com" method="post">
<li>
<label for="email">Email</label>
<input id="email" type="text" name="email" placeholder="Enter Email Address">
</li>
<span id="email_error"></span>
此外,我没有收到有关点击提交的错误消息。
答案 0 :(得分:1)
不,如果验证失败,您需要return false
的事件处理程序。这将阻止执行操作,即启动邮件程序。
我们可以通过在事件对象上调用.preventDefault()或从我们的处理程序返回false来取消提交操作。
像这样修改:
$(document).ready(function(){
$('#contactForm').submit(function(){
return validate();
});
});
当然,这意味着validate()
函数需要实际返回false
以防验证失败,和 true
否则
进一步您在id="contactForm"
标记上遗漏了<form>
。
此外,您需要正确获取电子邮件值:
var email = $("#email").val();
还有一个错误:你拼错了getElementById()
。这是一个更正版本:
function checkEmail() {
var email = $("#email").val();
if (email == "") {
document.getElementById("email_error").innerHTML = "No Email Address";
return false;
}
else {
document.getElementById("email_error").innerHTML = ""
return true;
}
}
或者,使用所有jQuery:
function checkEmail() {
var email = $("#email").val();
var $error = $("#email_error");
if (email == "") {
$error.html("No Email Address");
return false;
}
else {
$error.html("");
return true;
}
}
答案 1 :(得分:0)
以下是您的需求:
$(document).ready(function(){
$('#contactForm').submit(function(){
if (!validate()) {
return false; // Prevent the submit
}
});
});
答案 2 :(得分:0)
为了验证表单的字段,在发送之前,您可以使用jQuery的验证插件:
$(document).ready(function(){
$("#contactForm").validate({
submitHandler: function(form) {
// some other code
// maybe disabling submit button
// then:
$(form).submit();
}
});
});
查看在线文档以获取更多信息和示例:http://docs.jquery.com/Plugins/Validation#Validate_forms_like_you.27ve_never_been_validating_before.21