Javascript Jquery UI多日期选择器选择
您好,我有几个日期选择器,都在同一类的Javascript Jquery UI多日期选择器选择,javascript,jquery-ui,datepicker,Javascript,Jquery Ui,Datepicker,您好,我有几个日期选择器,都在同一类的下。日期选择器我有一个函数,可以执行任何日期选择器的onSelect。然而,我想在选择一个特定的日期选择器时执行另一个函数,我已经尝试对特定的日期选择器分配一个单独的日期选择器,我想要一个单独的函数,但似乎无法让它工作 原始日期选择器类 $(".datepicker").datepicker({ dateFormat: 'yy-mm-dd', showButtonPanel: true,
下。日期选择器
我有一个函数,可以执行任何日期选择器的onSelect
。然而,我想在选择一个特定的日期选择器时执行另一个函数,我已经尝试对特定的日期选择器分配一个单独的日期选择器,我想要一个单独的函数,但似乎无法让它工作
原始日期选择器类
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function (date_check) { }
})
我的特定目标日期选择器,它也包含日期选择器类
$("#myDate").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function (date_assign) { }
})
我的问题是:
是否有一种方法可以使用.datepicker
类将特定的日期选择器作为目标,以执行该特定日期选择器的辅助onSelect函数。还是有不同的方法
*注意:日期选择器必须能够执行.datepicker
类下的原始函数和新函数
更新
<input class="datepicker" id="a"> </input>
<input class="datepicker" id="b"> </input>
<input class="datepicker" id="myDate"> </input>
选择a或b或myDate时,运行原始的.datepicker
onSelect
功能
选择myDate时,运行原始的
.datepicker
onSelect
并运行一个单独的onSelect函数。您可以检查选项onSelect
是否已分配,如果已分配,则将其添加到函数中,如是
var onSelectFn = $("#myDate").datepicker( "option", "onSelect")
$("#myDate").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function (date_assign) {
if(typeof onSelectFn === 'function') onSelectFn();
// do the next function
}
})
更新
<input class="datepicker" id="a"> </input>
<input class="datepicker" id="b"> </input>
<input class="datepicker" id="myDate"> </input>
要更新#myDate
选择器的onSelect
属性,您需要如下操作
第一个datePicker
所有.datePicker
元素
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function (date_assign) {
if(typeof onSelectFn === 'function') onSelectFn();
// do the next function
}
})
然后更新#myDate
$("#myDate").datepicker( "option", "onSelect",function(data_assign){
// your new functionality
})
这应该可以做到:)创建一个自定义事件,然后触发该事件,将参数从select传递到自定义事件:
$('#myDate').on('customevent', function(e, dateText, inst) {
alert('custom triggered' + dateText);
});
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function(dateText, inst) {
if ($(this).is('#myDate')) {
$('#myDate').trigger("customevent", [dateText, inst]);
}
// do universal code
alert('Date:' + dateText);
}
});
在这里玩一下:我设法回答了我自己的问题:
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
showButtonPanel: true,
onSelect: function (date_check) {
//DO SOME FUNCTION STUFF
if($(this).attr('id') == "myDate") {
//DO SOME EXTRA STUFF
}
}
});
它的工作原理
每个日期选择器都使用.datepicker
类并执行第一个函数,但当您单击#myDate
日期选择器时,它会获得$(此)
的id属性,根据jquery UI日期选择器API:
onSelect函数
选择日期选择器时调用。函数接收
所选日期作为文本,日期选择器实例作为参数。
此
引用关联的输入字段
因此,
此
获取当前单击的日期选择器。然后,您可以将ID与您希望它匹配的元素进行比较,然后执行第二个功能。对不起,如果“#myDate”元素被“选中”,这只会运行第二个功能吗?否its将同时运行它们,您想禁用第一个并运行另一个?好的,但我只想在选择了“#myDate”日期选择器。我将尝试在我的问题中提供和示例。查看我的更新,看看这是否解释了我试图实现的目标。它似乎没有达到我希望它做的事情。选择任何日期选择器都可以执行其功能。但是选择#myDate日期选择器不会执行第二个功能。