jquery.datepicker、jquery.validate、jquery.uploadify冲突解决

时间:2023-01-28 14:06:58

Jquery 1.11.2

Jquery.validate 1.13.1

Jquery.Uploadify 3.2(flash版)

Jquery.DatePicker 用的是Jquery-ui 1.11.2

项目需要,一个页面上就同时使用了jquery.datepicker、jquery.validate、jquery.uploadify,结果使用中就发现uploadify和datepicker和validate各种冲突,报错都是js缺少对象。查了好久终于找到了解决原因

jquery文件要修改此处,增加了红字部分

 /**
* Determines whether an object can have data
*/
jQuery.acceptData = function (elem) {
var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()],
nodeType = +elem.nodeType || 1; // Do not set data on non-element DOM nodes because it will not be cleared (#8335).
return nodeType !== 1 && nodeType !== 9 ?
false : // Nodes accept data unless otherwise specified; rejection can be conditional
!noData || noData !== true && elem.getAttribute != null && elem.getAttribute("classid") === noData;
};

jquery.validate要将下面的代码注释掉:

                $( this.currentForm )
.validateDelegate( ":text, [type='password'], [type='file'], select, textarea, " +
"[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
"[type='email'], [type='datetime'], [type='date'], [type='month'], " +
"[type='week'], [type='time'], [type='datetime-local'], " +
"[type='range'], [type='color'], [type='radio'], [type='checkbox']",
"focusin focusout keyup", delegate)
// Support: Chrome, oldIE
// "select" is provided as event.target when clicking a option
.validateDelegate("select, option, [type='radio'], [type='checkbox']", "click", delegate);

就解决了。

至于去掉后到底有多少影响,还在测试,不过目前项目运行了2个多月没有发现有什么问题,至于什么原理也没搞清楚,查了好多资料也没找到问题所在,只说uploadify很蛋疼~

参考链接 http://blog.csdn.net/dyllove98/article/details/42871203