欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery Validation Engine驗(yàn)證控件調(diào)用外部函數(shù)驗(yàn)證的方法

 更新時(shí)間:2017年01月18日 13:55:00   作者:韓一寧  
這篇文章主要介紹了jQuery Validation Engine驗(yàn)證控件調(diào)用外部函數(shù)驗(yàn)證的方法,需要的的朋友參考下吧

在使用jQuery Validation Engine的時(shí)候,我們除了使用自帶的API之外,還可以自己自定義正則驗(yàn)證。自定義正則驗(yàn)證上一篇已經(jīng)講過(guò)了,如果想使用自定義函數(shù)進(jìn)行驗(yàn)證怎么辦?其實(shí)這個(gè)控件有個(gè)bug,在api中說(shuō)

也就是在我們需要進(jìn)行驗(yàn)證的地方加上funcCall[自定義函數(shù)名],但是我們會(huì)發(fā)現(xiàn)總會(huì)報(bào)錯(cuò),說(shuō)找不到你這個(gè)函數(shù)名。其實(shí)它的要求是要添加required進(jìn)行綜合驗(yàn)證,也就是validate[required,funcCall[yorn]],這樣它才識(shí)別我們的自定義函數(shù)。但是我們就是不想要required這個(gè)呢?或者說(shuō)我們?cè)诜夏撤N條件下才想讓required這個(gè)非空驗(yàn)證功能生效呢?

 <textarea class="m-area add-tw validate[funcCall[yorn]]" id="remark" cols="30" rows="10" ></textarea>

那么就需要使用以下幾種方法綜合施行,網(wǎng)上老外的解決辦法就是在函數(shù)中push一個(gè)required,可以讓其正常執(zhí)行。

我定義了一個(gè)yorn的函數(shù),而基本格式就是function yorn(field, rules, i, options){},其中field代表的是你驗(yàn)證的那個(gè)元素,我這里驗(yàn)證的是textarea,那么field就代表的是textarea。

首先我講一下我要實(shí)現(xiàn)的功能,我的需求是在點(diǎn)擊不通過(guò)且備注為空的時(shí)候觸發(fā)驗(yàn)證,提示“必須填寫內(nèi)容”。那么在通過(guò)備注為空,通過(guò)備注不為空,不通過(guò)備注不為空的情況下都不能觸發(fā)驗(yàn)證提示信息。而如果validate[required]這樣的話,只要不填寫備注信息都會(huì)觸發(fā)提示信息。所以我的思路是,當(dāng)點(diǎn)擊保存按鈕的時(shí)候判斷,點(diǎn)擊的是哪個(gè)radio,點(diǎn)擊不通過(guò)的時(shí)候給不通過(guò)的radio添加一個(gè)自定義屬性,同時(shí)賦值。而當(dāng)點(diǎn)擊通過(guò)radio的時(shí)候刪除這個(gè)自定義屬性。然后接著進(jìn)入驗(yàn)證,也就是進(jìn)入自定義函數(shù),獲取到不通過(guò)radio的自定義屬性值,獲取到備注的value,然后判斷這兩個(gè)條件是否同時(shí)成立,如果條件成立,則首先rules.push('required');因?yàn)槲覀兦懊嬲f(shuō)了如果想要實(shí)現(xiàn)自定義函數(shù)驗(yàn)證必須要有required,然后接著return options.allrules.required.alertText; 這句話是什么意思呢?就是返回你要提示的信息。而這個(gè)提示信息則另有地方進(jìn)行設(shè)置。

html文件,validate[funcCall[yorn]]設(shè)置自定義函數(shù)validate[funcCall[自定義函數(shù)名]]

<form id="approval">//這個(gè)驗(yàn)證控件必須有form
      <div class="name-ipt">
        <div class="m-name"><span>意見(jiàn):</span></div>
        <input type="radio" name="trial" class="m-radio col" />通過(guò)
        <input type="radio" name="trial" class="m-radio col" id="nocheck"/>不通過(guò)
      </div>
      <div class="name-ipt"></div>
      <div class="area-ipt add-td">
        <div class="m-name"><span>備注:</span></div>
        <textarea class="m-area add-tw validate[funcCall[yorn]]" id="remark" cols="30" rows="10"></textarea>
        <span class="m-span add-stl">剩余可輸入1000字</span>
      </div>
    </div>
</form>
<div class="add-sb">
   <a href="#" class="save-btn m" ng-click="saveAudit()" >保存</a>
</div>
(有效:步驟1)

因?yàn)槲沂怯玫腶ngular,所以給保存一個(gè)事件,在點(diǎn)擊保存的時(shí)候觸發(fā)事件,然后判斷兩個(gè)radio哪個(gè)被checked,其他的上面說(shuō)過(guò)。接著觸發(fā)驗(yàn)證進(jìn)入自定義函數(shù)中。、、

//自己js文件中寫
//保存
          $scope.saveAudit = function(){
            if($('#nocheck').attr('checked')){
              $("#remark").attr("trialAttr",'N');
            }else{
              $("#remark").removeAttr('trialAttr');
            }
            if($('#approval').validationEngine('validate')){
//驗(yàn)證通過(guò)的話之后要執(zhí)行的內(nèi)容
}
}
(有效:步驟2)

自定義函數(shù)必須帶rules.push('required');同時(shí)return options.allrules.required.alertText;這個(gè)自定義函數(shù)寫在自己的js文件里就行

//自己的js文件中寫
function yorn(field, rules, i, options){
    var trialAttr = field.attr("trialAttr") ;
    var textareaval = field.val();

    if(trialAttr == "N" && textareaval==''){
      rules.push('required');
      return options.allrules.required.alertText;
    }
}
(有效:步驟3)

接下來(lái)要設(shè)置自定義提示信息了,找到j(luò)query.validationEngine-zh_CN.js文件,然后在最下面自己跟隨一個(gè)對(duì)象,函數(shù)名在前面,后面alertText后跟你要提示的信息。這樣就OK了。

//這個(gè)在jquery.validationEngine-zh_CN.js中寫

(有效:步驟4)

之前我在這個(gè)文件的下面按照api自定義了一個(gè)函數(shù),但是發(fā)現(xiàn)根本無(wú)法執(zhí)行,因?yàn)楫?dāng)進(jìn)入驗(yàn)證的時(shí)候,首先判斷validate[required,funcCall[yorn]]的自定義函數(shù)中是否存在required,如果不存在就無(wú)法進(jìn)入到j(luò)query.validationEngine-zh_CN.js這個(gè)文件中執(zhí)行我們內(nèi)部定義的函數(shù)。但是如果把自定義函數(shù)放在我們自己的js中,就會(huì)先執(zhí)行我們自己js文件中的函數(shù),最后才判斷是否存在required,而這個(gè)時(shí)候我們已經(jīng)push進(jìn)去了,所以就不會(huì)報(bào)錯(cuò)說(shuō)找不到你自定義函數(shù)名了。

(這個(gè)是無(wú)效且不可執(zhí)行的,不要用)

這個(gè)驗(yàn)證控件其實(shí)挺不錯(cuò)的,只是這個(gè)bug給搞了半天,還好網(wǎng)上有解決辦法,但是貌似沒(méi)有一個(gè)像我說(shuō)的這么清楚的,都是點(diǎn)明一下而已。希望能夠幫助到大家,同時(shí)自己留存以后用。

相關(guān)文章

  • jQuery中(function($){})(jQuery)詳解

    jQuery中(function($){})(jQuery)詳解

    本文通過(guò)具體示例向大家詳細(xì)介紹了jQuery中的(function($){})(jQuery)的用法和意義,對(duì)此有相同困惑的小伙伴可以參考下本文。
    2015-07-07
  • jquery延遲加載外部js實(shí)現(xiàn)代碼

    jquery延遲加載外部js實(shí)現(xiàn)代碼

    為了提高加載速度,有個(gè)想法就是推遲外部JS加載,有興趣的朋友可以參考下,接下來(lái)詳細(xì)介紹實(shí)現(xiàn)方法
    2013-01-01
  • jquery DOM操作 基于命令改變頁(yè)面

    jquery DOM操作 基于命令改變頁(yè)面

    jquery DOM操作 基于命令改變頁(yè)面,需要的朋友可以參考下。
    2010-05-05
  • jQuery中對(duì)未來(lái)的元素綁定事件用bind、live or on

    jQuery中對(duì)未來(lái)的元素綁定事件用bind、live or on

    這篇文章主要介紹了jQuery中對(duì)未來(lái)的元素綁定事件用bind、live or on,需要的朋友可以參考下
    2014-04-04
  • jQuery $.each的用法說(shuō)明

    jQuery $.each的用法說(shuō)明

    jQuery中$.each的用法,學(xué)習(xí)jquery的朋友可以參考下。
    2010-03-03
  • JQuery小知識(shí)

    JQuery小知識(shí)

    我們通常在執(zhí)行一次ajax請(qǐng)求過(guò)后,需要更新界面上的某些內(nèi)容,一般通過(guò)動(dòng)態(tài)插入dom元素。
    2010-10-10
  • Bootstrop實(shí)現(xiàn)多級(jí)下拉菜單功能

    Bootstrop實(shí)現(xiàn)多級(jí)下拉菜單功能

    Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它簡(jiǎn)潔靈活,使得 Web 開(kāi)發(fā)更加快捷。本文重點(diǎn)給大家介紹bootstrap實(shí)現(xiàn)多級(jí)下拉菜單功能的實(shí)例代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-11-11
  • jquery分頁(yè)插件AmSetPager(自寫)

    jquery分頁(yè)插件AmSetPager(自寫)

    第一次做的插件,我這個(gè)插件好像使用有些另類,是調(diào)用數(shù)據(jù)展示容器的元素$(#DataContent).AmSetPager({...});在參數(shù)中配置分頁(yè)容器元素ID。寫完插件后看別的插件都是調(diào)用分頁(yè)元素ID
    2013-04-04
  • 使用jQuery+HttpHandler+xml模擬一個(gè)三級(jí)聯(lián)動(dòng)的例子

    使用jQuery+HttpHandler+xml模擬一個(gè)三級(jí)聯(lián)動(dòng)的例子

    昨天同學(xué)問(wèn)我有關(guān)如何快速讀取多層級(jí)xml文件的問(wèn)題,于是我就使用省、市、縣模擬了一個(gè)三級(jí)聯(lián)動(dòng)的例子,客戶端使用jQuery實(shí)現(xiàn)異步加載服務(wù)器返回的json數(shù)據(jù),服務(wù)器端則使用XPath表達(dá)式查詢數(shù)據(jù)。
    2011-08-08
  • jquery autocomplete自動(dòng)完成插件的的使用方法

    jquery autocomplete自動(dòng)完成插件的的使用方法

    最近剛開(kāi)始學(xué)jquery,想實(shí)現(xiàn)類似GOOGLE搜索時(shí)自動(dòng)顯示出相關(guān)結(jié)果的效果。于是選擇了使用jquery autocomplete插件。
    2010-08-08

最新評(píng)論