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方法先把缓存清理掉才能再次触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值