今天编写一个表单验证程序,我来说一下今天遇到的坑:程序不是通过submit按钮提交验证的,是在自己写的一个方法中提交的,出现了表单无法验证的情况。然后我就了解了一下jquery validate的验证方法。
jquery validate表单验证方式有三个:
1、直接通过submit方式提交,提交时自动验证(常用的方法,不懂得可以查看 菜鸟教程-validate使用)
2、如果不是submit提交,比如在jquery中的某个事件中,调用提交表单事件的情况,在此时,1中的情况就不适用了(可能出现表单不验证的方法),这也是我遇到的问题
这就需要自己先编写一个表单验证程序,验证通过后,再提交表单。
//编写的表单验证程序
function validateForm() {
return $("#cashForm").validate({
rules: {
name: {
required: true
},
phone: {
required: true,
pattern: /^0?(13[0-9]|15[012356789]|18[012346789]|14[57]|17[678]|170[059]|14[57]|166|19[89])[0-9]{8}$/
},
carId: {
required: true,
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
},
number: {
required: true,
remote: {
url: "${base}/business/cash/check_card",
cache: false
}
}
},
messages: {
phone: {
pattern: "${message("common.validate.pattern")}"
},
number: {
remote: "${message("common.validate.pattern")}"
}
}
}).form();
}
提交表单事件:(以下函数是验证码验证通过后,触发的表单验证,红色加粗部分,大家写的时候可以直接用此部分)
$(document).ready(function(){
var $cashForm = $("#cashForm"); //获取验证码按钮绑定点击事件
$(".verIfi-btn").on("click",verification); $("#sms_check").click(function () {
var smsCaptcha = $("input[name='smsCaptcha']").val();
var smsCaptchaId = $("input[name='smsCaptchaId']").val();
$.ajax({
url: "${base}/business/cash/sms_check",
type: "GET",
data:{
smsCaptchaId: smsCaptchaId,
smsCaptcha: smsCaptcha
},
dataType: "json",
cache: false,
success: function(message) {
if (message.check){
if(validateForm()){
$cashForm.submit();
}
}
}
});
});
});
3、验证一个单独的表单元素(校验规则写在空间中的时候使用)
例如:
<textarea id="ccomment" name="comment" maxlength="200" required></textarea>
验证方法:
function validateForm() {
$("#commentForm").validate().element($("#ccomment"));
} function doSubmit(){
//do other things
//验证通过后提交
if(validateForm()){
$("#commentForm").submit()
}
}