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

项目需要,一个页面上就同时使用了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

时间: 2024-10-10 03:31:47

jquery.datepicker、jquery.validate、jquery.uploadify冲突解决的相关文章

黄聪:Discuz自制模板带jquery时与discuz本身冲突解决办法

由于JQuery的效果很好,在制作模板时难免会用到各种jquery效果.可是做过模板的人就会发现加上自己的juery代码后,discuz自带的一些下拉功能就不可以使用了,其实原因就是discuz和JQuery的$发生冲突,导致有些功能失效.在网上找了一些资料整理了一下,希望能够帮到大家,同时也希望discuz能尽快解决这个问题. 方法一: 在页面的最头部,也就是<head>标签下的第一行开始引入我们用到的JQuery文件,这是为了能确保该JS可以在DZ默认JS之前加载. 在引用到该JS文件的地

解决jquery库和base库的冲突

jquery库引用在base库之前,$的所有权就是base库的:而jquery库引用在base库之前后的话,$的所有权就是jquery库的.解决这种库之间的冲突可用以下方法解决: 情况一,jquery库引用在base库之前 比如: //var $$ = jQuery; $(funtion(){       //jquery库引用在base库之前,$的所有权就是base库的 alert($("#box").ge(0)); //ge()方法属于base而不属于jquery alert(jQ

ecshop transport.js 和 jquery 冲突解决办法

您提供一个简单的解决transport.js 和 jquery 方法: 在 page_header.lbi 库文件中加入如下代码,注意操作顺序: 1.先导入transport.js  文件 {insert_scripts files='transport.js,utils.js'} 2.然后导入您网站使用的jquery文件 <script language="javascript" src="您的jquery存放路径"></script> 3

解决jQuery不同版同时引用的冲突

今天研发的同事在开发一个新jQuery插件时,遇到一个揪心的问题.平台以前使用的 jQuery版本是1.2.6,偶,天啊!这是古代的版本啊! 由于很多功能基于老版本,不能删除啊,同志们都懂的! 于是我们就在讨论如何解决两个版本之间的冲突.查找了一些前辈写的资料,得出以下的代码: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>解决jQu

jQuery库(noConflict)冲突解决机制

许多的JS框架类库都选择使用$符号作为函数或变量名,而且在实际的项目开发中,使用模板语言的话有可能"$"符号即为该模板语言的关键字.例如Veclocity模板语言,$是关键字.与jQuery一起使用可能会存在冲突(页面中直接写jq代码,引入的js文件不存在该问题).吐槽下为啥这么多js库喜欢用$($ is money?). jQuery是使用$符号作为函数或变量名最为典型的一个.在jQuery中,$符号只是window.jQuery对象的一个引用,因此即使$被删除,jQuery依然能保

jQuery中noConflict()机制的冲突解决方法

许多的JS框架类库都选择使用$符号作为函数或变量名,而且在实际的项目开发中,使用模板语言的话有可能"$"符号即为该模板语言的关键字.例如Veclocity模板语言,$是关键字.与jQuery一起使用可能会存在冲突(页面中直接写jq代码,引入的js文件不存在该问题). jQuery是使用$符号作为函数或变量名最为典型的一个.在jQuery中,$符号只是window.jQuery对象的一个引用,因此即使$被删除,jQuery依然能保证整个类库的完整性. jQuery的设计充分考虑了多框架之

jquery和其他js库起冲突的解决方法

我以为jquery只会和其他js框架如(Dojo,Prototype,ExtJs)等发生冲突 今天用了一下My97DatePicker日历控件 当我同时引入jquery.js和/My97DatePicker/WdatePicker.js时,出现错误,日历控件不可用 应该是js库发生冲突了 做了如下改动: var $j=jQuery.noConflict(); 以后用jquery的时候不再用$而是$j 这样问题就解决了.. 再分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段

jQuery和Prototype的兼容性和冲突的五种解决方法

第一种情况:先加载Prototype,再加载jQuery方法一:jQuery 库和它的所有插件都是在jQuery名字空间内的,包括全局变量也是保存在jQuery 名字空间内的. 使用jQuery.noConflict();主要作用是在任何时候,只要在jQuery加载后就可以调用,将$符号的使用权返回给其它的js库,jQuery在创建它自己的名字空间时就将其它库的$保存在自己的一个变量当中. [html] view plain copy print? <html> <head> &l

jQuery和Prototype的兼容性和冲突的多种解决方法

有两种情况: 1.先加载Prototype,再加载jQuery. 2.先加载jQuery,再加载Prototype. 针对情况1:先加载Prototype,再加载jQuery.方法一:jQuery 库和它的所有插件都是在jQuery名字空间内的,包括全局变量也是保存在jQuery 名字空间内的.使用jQuery.noConflict();主要作用是在任何时候,只要在jQuery加载后就可以调用,将$符号的使用权返回给其它的js库,jQuery在创建它自己的名字空间时就将其它库的$保存在自己的一个