正常的表单都是使用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+" "); 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 });
关键在于:validate的submitHandler,invalidHandler这2个方法都需要覆盖,都 return false;
转自:http://www.cnblogs.com/longterm/archive/2012/05/18/2507594.html