Jquery Validate根據其他元素的事件來觸發單個元素的異步校驗


場景:在做一個車輛信息管理模塊,而車牌是通過車牌顏色和車牌號碼來確定唯一性的,錄入車牌信息時需對車牌進行唯一性校驗。

對車牌號的異步校驗規則

 1 rules:{
 2             plateNumber:{
 3                 remote:{
 4                     url:'${ctx}/bu/vehicleInfo/checkPlateNumUniqueness',
 5                     data:{
 6                         plateNumber:function(){
 7                             return $("#plateNumber").val();
 8                         },
 9                         plateColor:function(){
10                             return $("#plateColor").val();
11                         }
12                     }
13                 }
14             }
15         },
16         messages:{
17             plateNumber:{
18                 remote:'已存在相同車牌號碼'
19             }
20         }

車牌顏色變動的時候通過觸發車牌號碼的校驗規則來對唯一性進行校驗

$("#plateColor").change(function() {
    //由於是根據車牌號碼和車牌顏色來判斷車牌號唯一性的,故車牌顏色改變時也應該校驗車牌號唯一性
    $("#plateNumber").removeData('previousValue');
    var plateNum = $("#plateNumber").val();
    if (plateNum != '') {
        $("#plateNumber").removeData('previousValue');
        validator.element($("#plateNumber"));
    }
});

這里遇到了一個問題,就是車牌顏色變動過一次觸發了唯一性校驗之后,再去變動車牌顏色就無法再次觸發唯一性校驗了,

后來在這里找到了答案(http://stackoverflow.com/questions/2710548/how-do-i-use-jquery-validate-remote-validation-on-a-field-that-depends-on-anothe)

原因是觸發了一次之后會有緩存,需要調用這removeData方法先把緩存清理掉才能再次觸發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM