13

我已经为此挠头两天了,我很确定我只是错过了一些简单的东西,但我一生都无法弄清楚为什么它不起作用。

我正在尝试在我的 WordPress 网站上使用以下脚本来禁用 ContactForm7 表单中日期选择器字段中的特定日期。

我可以使用相同的 id 使用简单的输入字段在 jsfiddle 中加载脚本,并且它运行良好......但是当我将它添加到我的网站时,日期并没有被禁用,并且 JS 错误控制台中有一个错误,上面写着“ jQuery(...).datepicker 不是函数”

我已将它添加到我的header.php文件中,就在调用下方和标签wp_head()上方。</head>我已经为我的 datepicker 字段分配dpick了脚本使用的 id。

我读到这个错误通常是在使用该$符号时引起的,因为它可能与 WordPress 中的其他 jQuery 脚本冲突......所以他们建议替换$jQuery(我已经在下面的脚本中完成了)......但我仍然得到错误

var unavailableDates = ["1-9-2013", "2-9-2013", "3-9-2013", "4-9-2013", "5-9-2013"];

    function unavailable(date) {
            dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
            if (jQuery.inArray(dmy, unavailableDates) == -1) {
                return [true, ""];
            } else {
                return [false, "", "Unavailable"];
        }
    }

        jQuery(function() {
            jQuery( '#dpick' ).datepicker({
                dateFormat: 'dd MM yy',
                beforeShowDay: unavailable
        });

    });

非常感谢您提供的任何帮助……这似乎是一件很简单的事情,但我似乎无法理解它!

4

10 回答 10

21

这个错误有几个原因:

  1. jquery.ui 在 jquery 之前使用。
  2. $ 被另一个库使用。
  3. 本地引用的 jquery 库(wordpress)与使用 jquery.ui 的版本不同。
  4. 当引用正确的库和版本时,必须清除浏览器缓存。
于 2013-08-22T15:06:25.997 回答
6

我遇到了同样的问题。就我而言,我的主页上有两个 jQuery 脚本引用(_Layout.cshtml在 ASP.NET MVC 中)。我在顶部添加了 1 个对 jQuery 的引用,但在页面底部有 1 个我没有注意到……在 Firebug 中,这就是我所看到的:

在此处输入图像描述

如您所见,jQuery UI 正处于冲突之中!:D 这花了我一些时间来弄清楚。

于 2013-11-13T23:34:34.207 回答
3

检查是否所有文件都已加载。应该有 200 ok 状态。

于 2015-06-02T06:20:15.740 回答
3

这对我有用,适用于冲突的 jquery 代码 -

  <script>  
  $.noConflict();  //Not to conflict with other scripts
jQuery(document).ready(function($) {
$( "#datepicker" ).datepicker({
  dateFormat:"yyyy-mm-dd",
  changeMonth: true,
  changeYear: true,
  maxDate: "+0D"
});

});
</script>
于 2016-08-18T07:19:17.257 回答
2

我知道这个问题很老,但可能是它可以帮助其他人:

在 wordpress 中包含 js 的最佳做法是在 php 模板中使用它的排队功能:

wp_enqueue_script( 'script', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true);

(在这里看到)

它允许声明脚本的依赖关系,在本例中为 jquery datepicker。您可以检查 wordpress 可以提供的内置脚本:

https://developer.wordpress.org/themes/basics/including-css-javascript/#default-scripts-included-and-registered-by-wordpress

Wordpress 专门为 jquery datepicker 提供依赖项,因此您可以在脚本中包含以下内容:

wp_enqueue_script( 'script', 'mypath' . '/js/script.js', array ( 'jquery', 'jquery-ui-datepicker' ), 1.7, true);

请注意,如果您只声明 jquery 依赖项,您将收到类似的错误

'jQuery.datepicker(...) 不是函数'

因为 datepicker 函数不包含在基本的 wordpres jquery 中。

于 2016-05-09T09:51:21.893 回答
1

我对wordpress没有太多经验,所以我可能会试图提供帮助。不过我用过pickadate。

过去我以前遇到过这个错误

未捕获的类型错误:对象 [对象对象] 没有方法 'datepicker'

这通常是因为我没有按正确的顺序加载 js 文件。查看您网站上的开发人员工具,我什至看不到 pickadate 插件的加载位置。我会检查(如果您还没有)以确保插件正在加载以及以正确的顺序加载。

于 2013-08-22T14:27:09.360 回答
0

好的,我前段时间遇到了同样的问题,问题的解决方案只是添加以包含jquery.ui.datepicker.js它包含在 jquery 包中。但是我仍然想知道为什么我必须包含它,因为我之前使用jquery.uijquery.ui.custom或者只是 jquery js 文件将为.datepicker()我执行该功能。

无论如何,它现在仍然很好用。希望这可以帮助。

于 2013-10-18T01:01:28.863 回答
0

我将所有脚本从页脚移到了头,然后事情开始正常工作

于 2015-10-27T14:41:06.480 回答
0

我知道这是一个老问题。我遇到了同样的问题,这是因为包含 jquery.min.js 以及 jquery-1.10.2.js 和 jquery-ui.js。因此,通过删除 jquery.min.js 我的 TypeError: $(...).datepicker is not a function 问题得到了解决。希望它对某人有所帮助。

于 2016-02-20T20:35:03.017 回答
0

我有一个类似的问题,但只在火狐浏览器上。我们正在使用 require 来加载 js 文件。我的javascript中有以下几行。

require(['jquery', 'jqueryui'], function ($) {
    $(document).ready(function () {
        $("#form1").validationEngine({ bindButtons: $(".bindButton") });

        $("#txtBidDate").datepicker({dateFormat: 'mm-dd-yy'});
        $("#txtInstDate").datepicker({dateFormat: 'mm-dd-yy'});
    });

要求异步加载 js 文件,并且不保证顺序,除非您定义 shim 配置或者您的 js 文件全部加载为 AMD。在我们的例子中,jquery 是在 jquery-ui 之后加载的。我们在 main.js 中定义了要求 jquery-ui 对 jquery 的依赖。这为我们解决了

于 2018-01-11T17:52:49.663 回答