jQuery.validator.addMethod自訂驗證

來源:互聯網
上載者:User

標籤:func   optional   resolved   date   method   letter   方式   傳遞參數   名稱   

jQuery.validator.addMethod("numOrLetter", function(value, element) {
return this.optional(element) || /^[0-9|A-Z|a-z]+$/.test(value);
}, "請輸入數字或字母");

$("#inputForm").validate({
    rules : {
        //要校正的表單名稱
        operationCode : {
            //自訂的校正規則
            numOrLetter:true,
            //ajax校正,通過後台服務校正使用者所輸內容是否已在資料庫中存在,後台服務只需要返回true或false即可,boolean類型,String類型都可
             remote:{
                //這裡通過get方式,參數放在Url後,剛開始?後寫了operationCode=,請求發送後,url變成?operationCode=&operationCode=value
                //所以就去掉了
                url:"${ctx}/operation/operation/validateCode?" + $("#operationCode").val(),
                type:"GET",
                dataType:"json"
                //POST方式時,可以通過
                //data:{paramName:value,...}傳遞參數
            }
        }
    },
    messages:{
        operationCode:{
            //這裡指定出錯資訊
            remote:"指定的編號已存在"
        }
    }
});


ajax校正,可以使用內建的remote,也可以通過addMethod()添加


jQuery.validator.addMethod("checkUnique", function(value, element) {
    var deferred = $.Deferred();//建立一個延遲物件
    $.ajax({
        url:"${ctx}/operation/operation/listJson?operationCode="+value,
        async:false,//要指定不能非同步,必須等待後台服務校正完成再執行後續代碼
        dataType:"json",
        success:function(page) {
            var len = page.rows.length;
            if (len > 0) {
                deferred.reject();
            } else {
                deferred.resolve();   
            }
        }
    });
    //deferred.state()有3個狀態:pending:還未結束,rejected:失敗,resolved:成功
    return deferred.state() == "resolved" ? true : false;
}, "編號已存在");


通過addMethod()添加的ajax校正比remote的好處:
remote()請求的服務返回結果必須為boolean或String類型的 true或false,這樣要校正的話,後台必須添加這樣的服務
addMethod(),使用$.ajax()就可以在success中對服務返回的資料進行處理判斷來,這樣就把背景工作(返回true,false)轉到前台了

jQuery.validator.addMethod自訂驗證

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.