在 jQuery 个数据表中实例化日期选择器
Instantiating datepicker in jQuery datatables
我有一个 jquery 数据表,其中有一列文本输入字段。我想要的是为这个输入集成一个日期选择器。
但是我的 datepicker 无法像往常一样处理此输入。所以我在数据表中使用 createdRow 回调进行了尝试,如下所示:
var col = [
{data:"first_name","width":"100px"},
{data:"last_name"},
{data:"start_date",
render: function (data){
return "<input type='text' class='datepicker' value='" + data + "'/>"
}}
];
var thistable = $('#example1').DataTable( {
data:dataSet,
select:{style:'single'},
columns:col,
createdRow:function(row){
var TinyDatePicker = DateRangePicker.TinyDatePicker;
TinyDatePicker($(".datepicker", row), {
//mode: 'dp-below',
format(date) {
return date.toLocaleDateString("fr-CA");
},
})
},
dom: 'frtip'
});
有人可以帮助我找到正确的方向吗?
您可以在此处使用 $(row).find(".datepicker")[0]
我们只是从当前行获取日期选择器引用,然后将其传递给您的 TinyDatePicker
。
演示代码:
var col = [{
data: "first_name",
"width": "100px"
},
{
data: "last_name"
},
{
data: "start_date",
render: function(data) {
return "<input type='text' class='datepicker' value='" + data + "'/>"
}
}, {
data: "end_date",
render: function(data) {
return "<input type='text' class='datepicker' value='" + data + "'/>"
}
}
];
var thistable = $('#example').DataTable({
data: [{
"first_name": "ABC",
"last_name": "xyz",
"start_date": "2021-06-17",
"end_date": "2021-06-21"
}, {
"first_name": "MNO",
"last_name": "pqr",
"start_date": "2021-08-20",
"end_date": "2021-08-21"
}],
select: {
style: 'single'
},
columns: col,
createdRow: function(row) {
var to_date = $(row).find(".datepicker") //get the datepicker..from that html
var TinyDatePicker = DateRangePicker.TinyDatePicker;
//pass here
to_date.each(function() {
TinyDatePicker($(this)[0], {
mode: 'dp-below',
format(date) {
return date.toLocaleDateString("fr-CA");
},
})
})
},
dom: 'frtip'
});
<link href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/tiny-date-picker.min.css" integrity="sha512-XcVC+nlwCXmH65gjIlz5Lx57HnQlmsL+7fodw4dnbGO0Nto2upjBQuFJGbnzvZrhwBxYY3CwRTRxAlpu+raOmg==" crossorigin="anonymous" referrerpolicy="no-referrer"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/date-range-picker.js" integrity="sha512-SDTzsq3MW7igxEalqF5ZmjCCmB3u9EB6/+2tlh7O202zFKzrAQzH/47RPmWIePygWwRU93Odkyg5OnU45enFIw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/tiny-date-picker.js" integrity="sha512-81caHXixVFIoMBwzWVOphLw5TDXsT+PVglggWRAiWdhQUaBhegldeH44KjRykOPx7l0xgL/ZPtIrKhGQgTnjjw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<table id="example" class="display" width="100%">
<thead>
<th>FIRST_NAME</th>
<th>LAST_NAME</th>
<th>START_DATE</th>
<th>END_DATE</th>
</thead>
<tbody></tbody>
</table>
我有一个 jquery 数据表,其中有一列文本输入字段。我想要的是为这个输入集成一个日期选择器。
但是我的 datepicker 无法像往常一样处理此输入。所以我在数据表中使用 createdRow 回调进行了尝试,如下所示:
var col = [
{data:"first_name","width":"100px"},
{data:"last_name"},
{data:"start_date",
render: function (data){
return "<input type='text' class='datepicker' value='" + data + "'/>"
}}
];
var thistable = $('#example1').DataTable( {
data:dataSet,
select:{style:'single'},
columns:col,
createdRow:function(row){
var TinyDatePicker = DateRangePicker.TinyDatePicker;
TinyDatePicker($(".datepicker", row), {
//mode: 'dp-below',
format(date) {
return date.toLocaleDateString("fr-CA");
},
})
},
dom: 'frtip'
});
有人可以帮助我找到正确的方向吗?
您可以在此处使用 $(row).find(".datepicker")[0]
我们只是从当前行获取日期选择器引用,然后将其传递给您的 TinyDatePicker
。
演示代码:
var col = [{
data: "first_name",
"width": "100px"
},
{
data: "last_name"
},
{
data: "start_date",
render: function(data) {
return "<input type='text' class='datepicker' value='" + data + "'/>"
}
}, {
data: "end_date",
render: function(data) {
return "<input type='text' class='datepicker' value='" + data + "'/>"
}
}
];
var thistable = $('#example').DataTable({
data: [{
"first_name": "ABC",
"last_name": "xyz",
"start_date": "2021-06-17",
"end_date": "2021-06-21"
}, {
"first_name": "MNO",
"last_name": "pqr",
"start_date": "2021-08-20",
"end_date": "2021-08-21"
}],
select: {
style: 'single'
},
columns: col,
createdRow: function(row) {
var to_date = $(row).find(".datepicker") //get the datepicker..from that html
var TinyDatePicker = DateRangePicker.TinyDatePicker;
//pass here
to_date.each(function() {
TinyDatePicker($(this)[0], {
mode: 'dp-below',
format(date) {
return date.toLocaleDateString("fr-CA");
},
})
})
},
dom: 'frtip'
});
<link href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/tiny-date-picker.min.css" integrity="sha512-XcVC+nlwCXmH65gjIlz5Lx57HnQlmsL+7fodw4dnbGO0Nto2upjBQuFJGbnzvZrhwBxYY3CwRTRxAlpu+raOmg==" crossorigin="anonymous" referrerpolicy="no-referrer"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/date-range-picker.js" integrity="sha512-SDTzsq3MW7igxEalqF5ZmjCCmB3u9EB6/+2tlh7O202zFKzrAQzH/47RPmWIePygWwRU93Odkyg5OnU45enFIw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-date-picker/3.2.8/tiny-date-picker.js" integrity="sha512-81caHXixVFIoMBwzWVOphLw5TDXsT+PVglggWRAiWdhQUaBhegldeH44KjRykOPx7l0xgL/ZPtIrKhGQgTnjjw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<table id="example" class="display" width="100%">
<thead>
<th>FIRST_NAME</th>
<th>LAST_NAME</th>
<th>START_DATE</th>
<th>END_DATE</th>
</thead>
<tbody></tbody>
</table>