今天編寫一個表單驗證程序,我來說一下今天遇到的坑:程序不是通過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()
}
}
參考:http://layznet.iteye.com/blog/1168811