如何将 "clear" 作为选项添加到范围菜单?
How to add "clear" as an option to the ranges menu?
我正在使用 jQuery daterangepicker 插件 (http://www.daterangepicker.com/),我想知道是否有人添加了 "Clear" 选项,或者知道如何添加到范围菜单,选择后会清除输入值?
使用基本文本输入:
<input type="text" name="txtDateRange" id="txtDateRange" value="" />
用这个实例化代码:
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear' : []
}
});
产生这个结果:
如何在选择菜单选项时绑定到插件正在使用的任何事件,以便在选择 "Clear" 菜单项时将文本输入值简单地设置为空字符串?
==更新==
请务必在所选答案中使用更新的解决方案。完美运行!
如果 start
和 end
是无效日期并传递两个对 [ 无效的值,您可以使用回调(第二个可选参数)函数清除输入=46=] 在数组中:
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear': ['', '']
}
}, function (start, end) {
if (!start._isValid && !end._isValid) {
setTimeout(() => {
$('#txtDateRange').val('').trigger('change');
})
}
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<input type="text" name="txtDateRange" id="txtDateRange" value="" />
您可以使用任何两个无效值作为日期:[null,null]
,但不能使用 [undefined,undefined]
,因为 undefined
时刻默认为 moment()
,即 now
,因此 ._isValid
.
您可以看到在他们的 examples page.
上使用的回调
更新。更好的用户体验和整体性能(我认为):
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear': [,]
}
}, function (start, end, label) {
if (label === 'Clear')
setTimeout(() => {
this.setEndDate(this.endDate[
this.endDate.valueOf() - this.startDate.valueOf() > 1440 ? 'subtract' : 'add'
](1,'days'));
$(this.element).val('');
})
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<input type="text" name="txtDateRange" id="txtDateRange" value="" />
我正在使用 jQuery daterangepicker 插件 (http://www.daterangepicker.com/),我想知道是否有人添加了 "Clear" 选项,或者知道如何添加到范围菜单,选择后会清除输入值?
使用基本文本输入:
<input type="text" name="txtDateRange" id="txtDateRange" value="" />
用这个实例化代码:
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear' : []
}
});
产生这个结果:
如何在选择菜单选项时绑定到插件正在使用的任何事件,以便在选择 "Clear" 菜单项时将文本输入值简单地设置为空字符串?
==更新==
请务必在所选答案中使用更新的解决方案。完美运行!
如果 start
和 end
是无效日期并传递两个对 [ 无效的值,您可以使用回调(第二个可选参数)函数清除输入=46=] 在数组中:
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear': ['', '']
}
}, function (start, end) {
if (!start._isValid && !end._isValid) {
setTimeout(() => {
$('#txtDateRange').val('').trigger('change');
})
}
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<input type="text" name="txtDateRange" id="txtDateRange" value="" />
您可以使用任何两个无效值作为日期:[null,null]
,但不能使用 [undefined,undefined]
,因为 undefined
时刻默认为 moment()
,即 now
,因此 ._isValid
.
您可以看到在他们的 examples page.
上使用的回调更新。更好的用户体验和整体性能(我认为):
$('#txtDateRange').daterangepicker({
startDate: moment().subtract(29, 'days'),
endDate: moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
'Clear': [,]
}
}, function (start, end, label) {
if (label === 'Clear')
setTimeout(() => {
this.setEndDate(this.endDate[
this.endDate.valueOf() - this.startDate.valueOf() > 1440 ? 'subtract' : 'add'
](1,'days'));
$(this.element).val('');
})
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<input type="text" name="txtDateRange" id="txtDateRange" value="" />