1. 程式人生 > >使用validate進行表單驗證,實現ajax非同步驗證

使用validate進行表單驗證,實現ajax非同步驗證

表單

 #{form @saveProject(), method:'POST', id:'saveProject'}
             <div class="data_info">
                <div class="data_item" >
                    <div class="item_title" style="height:50px;line-height: 30px">標的錄入-商票 <input id="ticketBidBtn" style="width:150px;height:30px;margin-left:500px;" type="button" value="新增房抵標的資訊"/></div>
                    <div class="item_content">
                        <ul>
                            <li>
                                <div class="td_title"><span>*</span>借款人:</div>
                                <div class="td_content"><input class="input_title" type="text" id="reality_name" name="reality_name" placeholder=""></div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>貸款金額(元):</div>
                                <div class="td_content"><input class="input_title" type="text" id="amount" name="amount" placeholder=""></div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>貸款期限(天):</div>
                                <div class="td_content">
                                 <input class="input_title" type="text" id="period" name="period" placeholder="">
                                </div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>募集期(天):</div>
                                <div class="td_content">
                                 <input class="input_title" type="text" id="invest_period" name="invest_period" placeholder="">
                                </div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>發標日:</div>
                                <input id="start_time"  name = "start_time" placeholder = "yyyy-mm-dd" type="text" style="height:30px;"/> 
                                    <img onclick="WdatePicker({el:$dp.$('start_time')})" src="@{'/public/My97DatePicker/skin/datePicker.gif'}" _fcksavedurl="@{'/public/My97DatePicker/skin/datePicker.gif'}" width="16" height="22" align="absmiddle"> 
                            </li>                                
                            <li>
                                <div class="td_title"><span>*</span>起息日:</div>
                                <input id="begin_interest"  name = "begin_interest" placeholder = "yyyy-mm-dd" type="text" style="height:30px;"/> 
                                    <img onclick="WdatePicker({el:$dp.$('begin_interest')})" src="@{'/public/My97DatePicker/skin/datePicker.gif'}" _fcksavedurl="@{'/public/My97DatePicker/skin/datePicker.gif'}" width="16" height="22" align="absmiddle"> 
                            </li>                                                   
                            <li>
                                <div class="td_title"><span>*</span>投資人年化利率:</div>
                                <div class="td_content"><input class="input_title" type="text" id="apr" name ="apr" placeholder=""></div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>標的型別:</div>
                                <div class="td_content">
                                <select name="type" id="type" class="input_select">
                                     <option value="1">如意寶</option>
                                </select>
                                </div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>商票編號:</div>
                                <div class="td_content"><input class="input_title" type="text" id="ticket_no" name="ticket_no" placeholder=""></div>
                            </li>           
                             <li>
                                <div class="td_title"><span>*</span>融資年化利率:</div>
                                <div class="td_content"><input class="input_title" type="text" id="invest_rate" name ="invest_rate" placeholder=""></div>
                            </li> 
                            <li>
                                <div class="td_title"><span>*</span>貸款用途:</div>
                                <div class="td_content"><textarea class="input_textarea" type="text" id="loanUsage" name = "loanUsage" placeholder=""></textarea></div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>擔保函編號:</div>
                                <div class="td_content"><input class="input_title" type="text" id="guarantee_no" name = "guarantee_no" placeholder=""></div>
                            </li>
                            <li>
                                <div class="td_title"><span>*</span>合同編號:</div>
                                <div class="td_content"><input class="input_title" type="text" id="pact_no" name = "pact_no" placeholder=""></div>
                            </li>
                             <li>
                                 <div class="td_title"><span>*</span>保障函:</div>
                                    <div class="pic_div">  
                                       <div class="pic_size">
                                           <input type="hidden" name="guarantee" id="guarantee" value=""/>                                 
                                           <input type="file" class="input_file" name="imgFile" id="guarantee_file" onchange="upload('guarantee_file','guarantee_image','guarantee');"/>
                                           <img id="guarantee_image" style="position:relative; z-index:5;" src="@{'public/skin/images/qcyh.jpg'}" />
                                       </div> 
                                    <div class="clear"></div>
                                  </div>
                             </li>
                             <li>
                                 <div class="td_title"><span>*</span>合同:</div>
                                    <div class="pic_div">  
                                       <div class="pic_size">
                                           <input type="hidden" name="pact" id="pact" value=""/>                                 
                                           <input type="file" class="input_file" name="imgFile" id="pact_file" onchange="upload('pact_file','pact_image','pact');"/>
                                           <img id="pact_image" style="position:relative; z-index:5;" src="@{'public/skin/images/qcyh.jpg'}" />
                                       </div> 
                                    <div class="clear"></div>
                                  </div>
                             </li>                                                                                                  
                        </ul>
                    </div>
                </div>
            </div>
            <div class="btn_alter">
            <input class="btn_search" type="submit" value = "儲存" >
            </div>
           #{/form}

validate 驗證

$().ready(function() {
	
	  $("#saveProject").validate({
		onkeyup: false, 
		//失去焦點驗證
		onfocusout: function(element) { $(element).valid(); },
	    rules: {
	    	reality_name:{
	   			required: true,
	   			remote: {
                 url: "/newr/supervisor/project/verifyUserByRealityName",
                 type: "post",
                 dataType: "json",
                 data: {
                	 reality_name: function () {
                         return $("#reality_name").val();    //這個是取要驗證的資料
                     }
                 },
                 dataFilter: function (data) {    //判斷控制器返回的內容
                         return data;
                     }
                 }
            },
	      	amount:{
		        required: true,
		        number:true
		    },
		    period:{
		        required: true,
		        digits:true
		    },
		    invest_period:{
		        required: true,
		        digits:true
		    },
		    start_time:{
		        required: true,
		        dateISO:true
		    },
		    begin_interest:{
		        required: true,
		        dateISO:true
		    },
		    apr:{
		        required: true,
		        number:true
		    },
		    ticket_no:{
		        required: true,
		        remote: {
	                 url: "/newr/supervisor/project/verifyTicketByTicketNo",
	                 type: "post",
	                 dataType: "json",
	                 data: {
	                	 ticket_no: function () {
	                         return $("#ticket_no").val();    //這個是取要驗證的資料
	                     }
	                 },
	                 dataFilter: function (data) {    //判斷控制器返回的內容
	                         return data;
	                     }
	                 }
		    },
		    invest_rate:{
		        required: true,
		        number:true
		    },
		    loanUsage:{
		        required: true
		      
		    },
		    guarantee_no:{
		        required: true
		    },
		    pact_no:{
		        required: true
		    }
		    
	    },
	    messages: {
	    	reality_name:{
	   			required: "請輸入借款人",
	   			remote:"借款人不存在,請核對"
	      	},
	      	amount:{
		        required: "請輸入貸款金額",
		        number:"金額輸入不合法"
		    },
		    period:{
		        required: "請輸入貸款期限",
		        digits:"貸款期限不合法"
		    },
		    invest_period:{
		        required: "請輸入募集期",
		        digits:"募集期不合法"
		    },
		    start_time:{
		        required: "請輸入發標日",
		        dateISO:"發標日不合法"
		    },
		    begin_interest:{
		        required: "請輸入起息日",
		        dateISO:"起息日不合法"
		    },
		    apr:{
		        required: "請輸入投資人年化利率",
		        number:"投資人年化利率不合法"
		    },
		    ticket_no:{
		        required: "請輸入商票編號",
		        remote:"商票不存在,請核對"
		    },
		    invest_rate:{
		        required: "請輸入融資年化利率",
		        number:"融資年化利率不合法"
		    },
		    loanUsage:{
		        required: "請輸入貸款用途"
		      
		    },
		    guarantee_no:{
		        required: "請輸入擔保函編號"
		    },
		    pact_no:{
		        required: "請輸入合同編號"
		    }
	     }
	    })
});

validate使用總結

1、validate 驗證的是name屬性

2、id就是隱藏掉也不能相同,比如要獲取值,則要去不同的值。

3、ajax非同步驗證remote的返回值為boolean

如果不能獲取用單引號’ ’

5、  onkeyup: false, //遮蔽鍵盤驗證

      onfocusout:function(element){ $(element).valid();},

6、  獲得許可權很重要!