关于重复初始化jquery.validate.js的问题
情景:
我的validate是动态初始化的,就是表单里面的内容是动态的,下一次使用的表单里面的内容,不一定是上一次的内容,所以需要对同一个form的每次使用,需要重新定义validate。
问题:下一次跟上一次的表单内容不一样的时候,下一次验证失效。
原因:源码里面的
1 2 3 4 5 6 7 8 |
validate: function( options ) { ...... var validator = $.data( this[ 0 ], "validator" ); if ( validator ) { return validator; } ...... }, |
因为没有清除var validator = $.data( this[ 0 ], “validator” ); 导致下面使用的时候,是上一次定义的,所以下次使用的验证其实是上一次的定义。
方法1: 修改源码方法, 因为调用验证的时候没有传入options,所以可以增加下面的代码。
1 2 3 4 5 |
if ( typeof (options) =="undefined") { if(validator){ return validator; } } |
方法2: 非修改源码的方法
在调用初始化前,设置数据,让判断失效。
1 2 3 4 5 6 7 8 9 |
$.data(form[0],"validator", false); 这里让这个判断失效 //多次初始化之后,后面初始化的验证无效 form.validate($.extend(true, $.PluginDefConfig.defValiConfig(), { ignore: "", rules: rules, submitHandler: function (form) { form.submit(); } })); |