この質問は、Jquery Datatables Date Range Filterというシナリオの複製です。データテーブルは正しくロードされますが、日付を選択するとエラーをスローします。次のエラーがスローされます。Datatable datefilterは正しく読み込まれますが、日付選択時にUncaught TypeErrorがスローされます
Uncaught TypeError: Cannot set property 'currentDay' of undefined
at Datepicker._selectDay (jquery-ui.1.12.1.js:8188)
at HTMLTableCellElement.selectDay (jquery-ui.1.12.1.js:8789)
at HTMLTableCellElement.dispatch (jquery.v1.12.0.min.js:3)
at HTMLTableCellElement.r.handle (jquery.v1.12.0.min.js:3)
は この問題はよく知られているを調べます。たとえば、datepicker要素IDが "#datepickerStart"の場合、指定されたページに1回だけ読み込まれます。 2つのDOM要素に同じ要素IDがある場合、上記のエラーがスローされます。
Jquery Datatables Date Range Filterで示されているように、主に個々のフィールド検索に使用しました。ブラウザでデベロッパーツールを調べると、#datepickerStartという2つのDOMが生成されているのがわかりました。 1つは検索エリアにあり、もう1つはテーブルエリアの最後にあります。
これらの重複するテーブルの列が次のコードによってどのように生成されるのか混乱します。
$('#example tfoot th').each(function(){
var title = $(this).text();
if (title === "Start date") {
$(this).html('<input type="text" id="datepickerStart" placeholder="Search '+title+'" />');
} else if (title === "End date") {
$(this).html('<input type="text" id="datepickerEnd" placeholder="Search '+title+'" />');
} else {
$(this).html('<input type="text" placeholder="Search '+title+'" />');
}
});
は、私が何かを逃してくださいまたは私はそれを間違った方法を実行します。これはコードの下に注入するか、検索テキストボックスのために生のHTMLを入れたときにどちらかが起こることを知ってください!私は、データテーブルを2回初期化しなかったか、またはdatePicker要素を2回作成していないかをクロスチェックしました。
どこが間違っているか分かりやすく教えてください。前もって感謝します。
編集1: 次のようにテーブル構造が作成され、
<table id='example' class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>URL</th>
<th>Title</th>
<th>User</th>
<th>Start date</th>
<th>End date</th>
<th>Duration</th>
</tr>
</thead>
<tfoot>
<tr>
<th>URL</th>
<th>Title</th>
<th>User</th>
<th>Start date</th>
<th>End date</th>
<th>Duration</th>
</tr>
</tfoot>
</table>
いかなる理由? – Bindrid
@Bindrid私はあなたの質問を理解していないが、私のテーブル構造は、データテーブルのコードを初期化する前に、上記のとおりです。 – webblover