一、樣板
<script type="text/javascript" src="<{xoAppUrl}>modules/ugm_tools2/class/jquery.validate/jquery.validate.min.js"></script> <script type="text/javascript"> $( document ).ready( function () { $( "#myForm" ).validate({ submitHandler: function(form) { //驗證成功之後就會進到這邊: //方法一:直接把表單 POST 或 GET 到你的 Action URL //方法二:讀取某些欄位的資料,ajax 給別的 API。 //此處測試方法一的寫法如下: form.submit(); }, rules: { no: { required: true,//必填 remote: { url: "<{$SCRIPT_NAME}>", type: "post", dataType: "json", //接受数据格式 data: { op : "check_no", no : function() { return $( "#no" ).val(); } } } }, title: "required", //必填 email: { email: true } }, messages: { title: "請填寫公司名稱!", email: "請填寫正確email!", no: { required : "請填寫公司編號!", remote : "編號已存在" } }, errorElement: "em", errorPlacement: function ( error, element ) { // Add the `help-block` class to the error element error.addClass( "help-block" ); // Add `has-feedback` class to the parent div.form-group // in order to add icons to inputs element.closest( "div.form-group" ).addClass( "has-feedback" ); //因checkbox、radio,外面多一層 label if ( element.prop( "type" ) === "checkbox" || element.prop( "type" ) === "radio") { error.insertAfter( element.parent( "label" ) ); } else { error.insertAfter( element ); } // Add the span element, if doesn't exists, and apply the icon classes to it. if ( !element.next( "span" )[ 0 ] ) { $( "<span class='form-control-feedback feedback-no fa fa-times'></span>" ).insertAfter( element ); } }, success: function ( label, element ) { // Add the span element, if doesn't exists, and apply the icon classes to it. if ( !$( element ).next( "span" )[ 0 ] ) { $( "<span class='form-control-feedback feedback-ok fa fa-check'></span>" ).insertAfter( element ); } }, highlight: function ( element, errorClass, validClass ) { //驗證失敗要做的事 //在父親(div)+ has-error - has-success //在後面(span) + glyphicon-remove - glyphicon-ok $( element ).closest( "div.form-group" ).addClass( "has-error" ).removeClass( "has-success" ); $( element ).next( "span" ).addClass( "fa-times" ).removeClass( "fa-check" ); $( element ).next( "span" ).addClass( "feedback-no" ).removeClass( "feedback-ok" ); }, unhighlight: function ( element, errorClass, validClass ) { //驗證成功要做的事 $( element ).closest( "div.form-group" ).addClass( "has-success" ).removeClass( "has-error" ); $( element ).next( "span" ).addClass( "fa-check" ).removeClass( "fa-times" ); $( element ).next( "span" ).addClass( "feedback-ok" ).removeClass( "feedback-no" ); } }); //console.log( $( "#myForm" ).validate()); }); </script>
二、流程
必須用「json_encode」,才會傳回 true、false
#----- 檢查編號 case "check_no": echo json_encode(check_no()); exit;
三、程式
驗證成功:傳回true ,驗證失敗:傳回false
function check_no(){ global $xoopsDB; $no = system_CleanVars($_REQUEST, 'no', '', 'string'); if(checkNo("ugm_stk_vendor",$no)){ ajaxDebug("編號已存在".$no,"check_no"); return false; }else{ ajaxDebug("編號不存在".$no,"check_no"); return true; } }