JQuery时间选择器附加错误

时间:2015-01-22 17:09:56

标签: jquery-ui datetimepicker

我在页面上使用了jquery-ui-timepicker-addon,我收到了这个错误:

  

TypeError:$ .widget.extend不是this.options =的函数   $ .widget.extend({},jquery-ui.js(第579行,第17栏)

我使用:

创建控件
$("input.dateInfo").datetimepicker()

在这里我没有得到任何错误。单击控件(输入字段)时出现错误。我没有显示日期时间选择器,而是得到了上面的错误。

对此错误有何解释? 我使用require.js来加载javascript库。我有更多的js文件加载。如果有任何冲突,使用其他一些jquery插件,我怎么知道冲突在哪里?

稍后编辑:

我使用require.js加载库

paths: {
        jquery: 'jquery/jquery.min',
        jquery_ui: 'jquery-ui-1.11.2.custom/jquery-ui',
        jquery_ui_widget: 'jquery-picklist/jquery.ui.widget',
        jquery_ui_timepicker: 'jquery-ui-1.11.2.custom/jquery-ui-timepicker-addon',
        bootstrap: 'bootstrap-3.0.0/js/bootstrap.min',
        bootbox:'bootstrap-3.0.0/plugins/bootbox.min',
        moment: 'moment/moment',
        //bootstrap_dateTime_picker: "bootstrap-dateTimePicker/bootstrap-datetimepicker",
        sugar: 'sugar/sugar-1.3.6.min'
    // some more lines here
    }

shim: {
        "jquery": ["sugar"],
        "slim_scroll": ["jquery"],
        "jquery_ui": ["jquery"],
        "jquery_ui_widget": ["jquery","jquery_ui"],
        "jquery_ui_timepicker": ["jquery", "jquery_ui"],

        "bootstrap": ["jquery_ui"],
        "less": ["jquery"],
        "sugar_loaded": ["jquery","sugar"]
        // some more lines here
    }

2 个答案:

答案 0 :(得分:1)

jquery-ui-typeerror-e-widget-extend-is-not-a-function

可能重复

检查脚本加载顺序。

<script src="/scripts/jquery.js">
<script src="/scripts/jquery-ui.js">
<script src="/scripts/other-widgets.js">

修改

在您的编辑中,您提到您正在使用require.js。使用require.js,您需要提及模块的依赖关系来管理加载序列,否则每个脚本都将异步加载。

现在,问题归结为,你的一个脚本依赖于jquery_ui_widget,但是你错过了将其视为依赖:

shim: {
    "jquery": ["sugar"],
    "slim_scroll": ["jquery"],
    "jquery_ui": ["jquery"],
    "jquery_ui_widget": ["jquery","jquery_ui"],
    "jquery_ui_timepicker": ["jquery", "jquery_ui"],

    "bootstrap": ["jquery_ui"],
    "less": ["jquery"],
    "sugar_loaded": ["jquery","sugar"]
    // some more lines here
}

在这里,我是关于哪个脚本取决于 jquery_ui_widget ,但我的猜测是slim_scrolljquery_ui_timepickerbootstrap

答案 1 :(得分:0)

在外部js文件列表中添加和删除后,我发现冲突是: jquery_ui_widget:'jquery-picklist / jquery.ui.widget'。我删除了这个js文件(我很运气,这是一个不再使用的组件),一切都开始正常工作!

感谢任何人试图帮助我。我认为这是一个特定于我的特定项目的问题,它使用了大约20个外部js库,其中一个引起了冲突。