web-dev-qa-db-ja.com

キャッチされていないtypeErrorを返すDatepicker:undefined 'currentDay'

BootstrapでjQuery UIを使用してきましたが、これまでになかった問題に遭遇したようです。何が変わったのかわかりません。 jQueryのバージョンであり、その間jQuery UIを更新しなかったため、何が壊れたのか正確にはわかりません。

Datepickerで日付をクリックすると、コンソールからエラーが返されます。

Uncaught TypeError: Cannot set property 'currentDay' of undefined 

日付ピッカーから予想されるように、コードはかなり簡単です。

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

次のHTMLを使用します。

<input type="text" class="datepicker" />

これは報告する必要のあるバグですか(他のGoogleの一致が表示されないため)、または私が見逃した他の何かですか?

45

私は解決策を見つけました。長時間のデバッグの後、<div>がまったく同じIDを持ち、入力フィールドよりも上にあります。したがって、スクリプトはIDを含む最初のインスタンスを取得し、DIVフィールドではなくinputフィールドを選択しました。

DIVを削除/名前を変更すると、再び正常に機能しました。

128

上記のjQuery datepickerエラーは通常、idを使用するか、cssクラスやフィールド名などの別のセレクターを使用してインスタンス化するかに関係なく、同じIDを持つコントロールが重複しているために発生します。

20
i--

セレクターを配置します。

<script>  $("#formID #duplicatedId").datepicker({language: 'he'});
</script>

FormID:入力を含むフォームのID。

duplicatedId:入力要素のID。

1
gozgunes

私の場合、私はdivから非表示の入力フィールドに対してdatepickerをトリガーしていましたが、getPos(a)は変数「a」で未定義のメッセージを引き起こしていました。隠し入力フィールドをdivの外側に移動する実験を行ったところ、うまくいきました。入力フィールドは、jQueryがどこにいても検索可能であることに注意してください。したがって、それは問題ではなく、位置決めに関係していました。これが他の誰かに役立つことを願っています。

1
saswanb

このエラーも発生していました。フォームの他の場所に、フォーム入力のIDと一致しないラベル「for」属性があったことがわかりました-これもdatepickerを混乱させるようです。それらを修正すると、すべてが正常に機能し、エラーはなくなりました。 Andreasのアドバイス(そのために+1!)を取り、フォームを検証します-Chris PederickのWeb Developer Toolbarは、あなたが行くときに検証する簡単な方法を提供します。

1

異なるIDを持たない同じクラスを持つ2つの入力ボックスがあり、そのために日付選択を試みています。存在する場合は、2つの異なるIDを指定すると機能します。

0
Venkatesan

私もこの問題に遭遇しました、そして、私は重複IDを使用しなかったことを100%確信しました。いくつかのデバッグの後、私は理由を見つけました-私はtfootの内容を複製するDataTables modを使用していたので、datepicker要素の正確なコピーを作成しました。そして、私はこの日付ピッカー入力をtfoot行に入れました。

次の問題を修正しました。

table.find("TFOOT").find("TR:first").remove();

これはAFTER table.DataTable(....)と呼ばれます

これにより、すべてのコンテンツを含む元の高さゼロの行が削除されました。

0
Sergey