今天編寫一個表單驗證程序,我來講一下今天遇到的坑:程序不是經過submit按鈕提交驗證的,是在本身寫的一個方法中提交的,出現了表單沒法驗證的狀況。而後我就瞭解了一下jquery validate的驗證方法。html
jquery validate表單驗證方式有三個:jquery
一、直接經過submit方式提交,提交時自動驗證(經常使用的方法,不懂得能夠查看 菜鳥教程-validate使用)ajax
二、若是不是submit提交,好比在jquery中的某個事件中,調用提交表單事件的狀況,在此時,1中的狀況就不適用了(可能出現表單不驗證的方法),這也是我遇到的問題json
這就須要本身先編寫一個表單驗證程序,驗證經過後,再提交表單。函數
//編寫的表單驗證程序
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(); }
提交表單事件:(如下函數是驗證碼驗證經過後,觸發的表單驗證,紅色加粗部分,你們寫的時候能夠直接用此部分)ui
$(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(); } } } }); }); });
三、驗證一個單獨的表單元素(校驗規則寫在空間中的時候使用)url
例如:spa
<textarea id="ccomment" name="comment" maxlength="200" required></textarea>
驗證方法:code
function validateForm() {
$("#commentForm").validate().element($("#ccomment"));
}
function doSubmit(){
//do other things
//驗證經過後提交
if(validateForm()){
$("#commentForm").submit()
}
}