正常的表單都是使用submit按鈕來提交,jquery validate插件可以方便的做表單驗證。
要做一個發送短信的功能,向目標表插入多條記錄,界面采用ajax來提交表單,等待效果直接用ext的遮罩了。
但是如何驗證卻碰到問題。
解決方式很簡單,表單跟正常表單一樣,validate的submitHandler,invalidHandler這2個方法都需要覆蓋,都return false;這樣表單就不會在點擊按鈕的時候提交了,表單驗證跟正常驗證起作用。submitHandler在return 之前寫上我們的表單處理代碼就ok了。
代碼如下,可以忽略ext相關代碼。
1 //表單驗證 2 $("#query").validate({ 3 onkeyup : false, 4 onclick : false, 5 onfocusout : false, 6 rules : { 7 msg : { 8 required : true, 9 maxlength : 10 10 } 11 }, 12 messages:{ 13 msg:{ 14 required : '請輸入短信內容!', 15 maxlength : '長度超過10!' 16 } 17 }, 18 showErrors : function(errorMap, errorList) { 19 var msg = ""; 20 $.each(errorList, function(i,v){ 21 msg += (v.message+"\r\n"); 22 }); 23 if(msg!="") 24 Ext.Msg.alert('表單',msg + fix); 25 }, 26 invalidHandler : function(){ 27 return false; 28 }, 29 submitHandler : function(){ 30 //表單的處理 31 Ext.Msg.confirm("確認", "是否確認發送?" + fix, function(button,text){ 32 if(button == 'yes'){ 33 loadMarsk.show(); 34 $.ajax({ 35 url:'<%=basePath %>promotionAction.do?method=group', 36 dataType:'json', 37 type:'post', 38 data:$('#query').serialize(), 39 error:function(){ 40 Ext.Msg.alert('錯誤','請求錯誤!' + fix); 41 loadMarsk.hide(); 42 }, 43 success:function(data){ 44 Ext.Msg.alert('成功',data.msg + fix); 45 loadMarsk.hide(); 46 } 47 }) 48 } 49 } ); //confirm 50 return false;//阻止表單提交 51 } 52 });