jQuery UI 日期选择器 onClose:区分日期单击和文档单击
jQuery UI Datepicker onClose: distinguish between date click and document click
我有一个带有onClose函数的日期选择器,当用户选择日期(正确)时调用该函数,但是当显示日历但用户单击文档中的任意位置(错误)时也会调用该函数。
在onClick中,有没有办法区分用户对日期的点击(然后日历关闭)和用户在文档中的点击?
$( "#datePicker" ).datepicker({
...
onClose: myFunction(),
...
});
同一日历有两种使用方式:
- 有时用户可以选择一个日期(点击一天 ->必须调用 myFunction()
- 有时用户必须选择一个月份(选择月份 ->单击"确定"按钮-> 必须调用 myFunction()
我尝试使用"onSelect":它仅在用户单击某一天时才有效,但是当日历为"选择月份模式"时不会调用myFunction。
谢谢。
这是我使用 Kumar 解决方案尝试@Prashant代码:
my={};
(function(){
my.customCalendar={
closedBySelect:false,
init: function()
{
$( "#datePicker" ).datepicker({
...
onSelect: function () {
my.customCalendar.myFunction();
this.closedBySelect = true;
},
onClose: function (){
console.log('fired on close');
if (this.closedBySelect) {
console.log('logic when closed on select');
this.myFunction();
} else {
console.log('logic when closed on document click');
}
my.customCalendar.closedBySelect = false;
},
...
showButtonPanel: true
});
...
myFunction:function (dateText, inst)
{
...
},
...
}
这个
怎么样
$(function () {
$('#datepicker').datepicker({
closedBySelect:false,
onSelect: function (date, options) {
alert('fired when selected');
options.settings.closedBySelect = true;
},
onClose: function (date, options) {
alert('fired on close');
if (options.settings.closedBySelect) {
console.log('logic when closed on select');
} else {
console.log('logic when closed on document click');
}
options.settings.closedBySelect = false;
}
});
});
closedBySelect 不在 API 中,而是添加的自定义属性,我们可以轻松地在日期选择器的所有事件中设置:)
更新代码 :
这里使用了略有不同的方法 -
$(function () {
var datePicker = $('#datepicker');
datePicker.data('closedOn','document').datepicker({
showButtonPanel:true,
onClose: function (date, options) {
alert($(this).data('closedOn'));
// your logic goes here ...
$(this).data('closedOn','document');
}
}).datepicker('widget').on('mousedown',function(event){
var $this = $(this);
var target = $(event.target);
if(target.hasClass('ui-datepicker-close'))
{
console.log('closed from button panel');
datePicker.data('closedOn','byButtonPanel');
}
if( typeof target.parent().data('month') != 'undefined')
{
console.log('closed by selecting date');
datePicker.data('closedOn','byDateSelect');
}
});
});
相关文章:
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- Jquery UI日期选择器没有'单击链接时不会再次显示
- 在日期选择器外部单击时,.blur()不会触发
- Day在完整日历中单击特定日期的事件警报
- 单击复选框时显示日期选择器
- JQuery:单击范围标签时切换日期选择器
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 日期选取器单击事件获取日期
- 单击按钮可多次动态添加选择框、文本框和日期,并将这些值插入数据库
- 单击按钮时显示日期选择器
- Bootstrap日期选择器setDatesDisabled无法处理按钮单击
- 通过单击Javascript中的nextdate按钮,可以增加日期、日期、月份和年份
- 第一次单击时未显示日期选取器
- 完整日历 - 读取键盘箭头键并派生与单击日期单元格相同的行为
- 从单击日期开始将数据放入输入类型中
- 我可以让 jQuery UI 日期选择器元素在单击日期时不重置吗?
- 为什么本地化仅在单击日期或任何其他按钮后才会更改
- 日期选择器引导程序:仅检测何时单击日期
- 如果单击日期选取器字段,则必须显示两个日期范围日历
- JQuery Datepicker日期仅在单击日期时捕获