13

私はこれについて2日間頭を悩ませてきました.単純なものが欠けていることは確かですが、なぜそれが機能しないのかを一生理解することはできません.

WordPress サイトで以下のスクリプトを使用して、ContactForm7 フォームの日付ピッカー フィールド内の特定の日付を無効にしようとしています。

同じ ID を使用して単純な入力フィールドを使用して jsfiddle にスクリプトを読み込むことができ、それは完全に機能します...しかし、それをサイトに追加すると、日付が無効にならず、JS エラー コンソールに「 jQuery(...).datepicker は関数ではありません"

header.phpファイルのwp_head()呼び出しのすぐ下、</head>タグのすぐ上に追加しました。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. ローカル(wordpress)で参照されているjquery libは、jquery.uiを使用したものとはバージョンが異なります。
  4. 適切なライブラリとバージョンが参照されたら、ブラウザのキャッシュをクリアする必要があります。
于 2013-08-22T15:06:25.997 に答える
6

私は同じ問題を抱えていました。私の場合、メイン ページ ( _Layout.cshtmlASP.NET MVC) に 2 つの jQuery スクリプト参照がありました。上部にjQueryへの参照を1つ追加しましたが、ページの下部に気付かなかったものが1つありました... Firebugでは、これが私が見たものです:

ここに画像の説明を入力

ご覧のとおり、jQuery UI は競合の真っ只中にありました。:D これを理解するのに時間がかかりました。

于 2013-11-13T23:34:34.207 に答える
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 テンプレートで It's queuing 関数を使用して実行することです。

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/include-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(...) は関数ではありません」

日付ピッカー関数はベースの wordpres jquery に含まれていないためです。

于 2016-05-09T09:51:21.893 に答える
1

私はワードプレスの経験があまりないので、助けようとしているとは限りません。私はpickadateを使用しました。

過去にこのエラーが発生しました

キャッチされていない TypeError: オブジェクト [オブジェクト オブジェクト] にはメソッド 'datepicker' がありません

通常、js ファイルを正しい順序でロードしなかったために発生します。あなたのサイトの開発者ツールを見ると、pickadate プラグインが読み込まれている場所さえわかりません。プラグインがロードされていること、および正しい順序でロードされていることを確認するために (まだチェックしていない場合) チェックします。

于 2013-08-22T14:27:09.360 に答える
0

私はこれが古い問題であることを知っています。私はこれと同じ問題を抱えていました.jquery-1.10.2.jsおよびjquery-ui.jsとともにjquery.min.jsを含めたことが原因でした。したがって、jquery.min.js を削除することで、TypeError: $(...).datepicker is not a function の問題が解決されました。それが誰かに役立つことを願っています。

于 2016-02-20T20:35:03.017 に答える
0

同様の問題がありましたが、Firefox ブラウザーでのみ発生しました。js ファイルをロードするために require を使用しています。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 の後にロードされました。jquery-ui が jquery に依存していることを require するために main.js で定義しました。これで修正されました

于 2018-01-11T17:52:49.663 に答える