我使用jQuery创建了表单验证。提交表单时遇到问题。我只能对必填字段进行验证。在必要的字段验证后,它会自动提交表单,但我想要做电子邮件字段验证,字母验证等所有事情。
这是我的代码:
$(document).ready(function(){
$('#userform').validate({
rules: {
firstname: "required",
lastname: "required",
sex: "required",
qualification: "required",
email: "required",
password: "required",
},
messages: {
firstname: "Please enter your first name",
lastname: "Please enter your last name",
sex: "select gender",
qualification: "select qualification",
email: "enter valid email id",
password: "Password must be required"
},
submitHandler: function(form) {
$txtfname = $('#txtfname').val()
$txtlname = $('#txtlname').val()
$txtemail = $('#txtemail').val()
$txtpasswd = $('#txtpasswd').val()
$txtcpasswd = $('#txtcpasswd').val()
if(!($txtfname.match(/^[a-zA-Z\s]+$/)))
{
$('.errfname').text("only alphapets");
}
else
{
$('.errfname').text("");
}
if(!($txtlname.match(/^[a-zA-Z\s]+$/)))
{
$('.errlname').text("only alphapets");
}
else
{
$('.errlname').text("");
}
$valemail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
if($valemail.test($txtemail))
{
$('.erremail').text("");
}
else
{
$('.erremail').text("Invalid email address");
}
if($txtpasswd != $txtcpasswd)
{
$('.errcpasswd').text("Password doesn't match");
}
else
{
$('.errcpasswd').text("");
}
form.submit();
}
});
});
任何人都可以帮助我这样做。提前致谢
答案 0 :(得分:0)
你遇到的问题是表单的submitHandler将始终到达form.submit();所以无论出现什么,如果必填字段都已完成,表单将提交。
如果您在submitHandler中进行了验证,那么如果部分验证失败,您应该有一些方法可以阻止它访问form.submit()部分。
另外,请确保您也在服务器上进行验证,以防提交表单而不进行验证。
submitHandler: function(form) {
var doFormSubmit = true;
$txtfname = $('#txtfname').val()
$txtlname = $('#txtlname').val()
$txtemail = $('#txtemail').val()
$txtpasswd = $('#txtpasswd').val()
$txtcpasswd = $('#txtcpasswd').val()
if(!($txtfname.match(/^[a-zA-Z\s]+$/)))
{
$('.errfname').text("only alphapets");
doFormSubmit = false;
}
else
{
$('.errfname').text("");
}
if(!($txtlname.match(/^[a-zA-Z\s]+$/)))
{
$('.errlname').text("only alphapets");
doFormSubmit = false;
}
else
{
$('.errlname').text("");
}
$valemail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
if($valemail.test($txtemail))
{
$('.erremail').text("");
}
else
{
$('.erremail').text("Invalid email address");
doFormSubmit = false;
}
if($txtpasswd != $txtcpasswd)
{
$('.errcpasswd').text("Password doesn't match");
doFormSubmit = false;
}
else
{
$('.errcpasswd').text("");
}
if (doFormSubmit)
{
form.submit();
}
}