我有一个带有类的输入[date_caisse]:datepicker-inline AND id:[date_caisse]
我在所有网页上初始化了此功能:
function InitEvents () {
$('.datepicker-inline').datepicker({
showButtonPanel: true, /*added by oussama*/
changeMonth: true, /*added by oussama*/
changeYear: true, /*added by oussama*/
firstDay: 1,
dateFormat: 'yy-mm-dd',/*'dd/mm/yy'*/
onSelect: function (dateText, inst) {
//alert('select!');
id = $(this).attr('id');
parts = id.split('-');
id2 = parts[parts.length -1];
$('#datepicker-target-id-' + id2).val(dateText);
}
});
}
我想仅在当前页面上应用onSelect,所以这就是我所做的:
$('#date_caisse').datepicker({
onSelect: function (dateText, inst) {
alert('select!');
}
});
当我在主js文件(在所有页面中调用)上放 alert('select!'); 时,它可以工作!但是当我尝试通过当前文件触发操作时它不会。
也许,onSelect不应该被调用两次。
那么,有人可以帮我吗?
谢谢,祝你有个美好的一天!
答案 0 :(得分:11)
您是否将第二个函数放在jquery初始化块中? 我的意思是,它看起来应该是
$(function(){
$('#date_caisse').datepicker({
onSelect: function (dateText, inst) {
alert('select!');
}
});
});
好的,我明白了。 初始化datepicker时,原始dom元素标记有一个新的类添加,称为 hasDatepicker ,可防止后续初始化/重新配置。 我发现摆脱它的方法是删除该标记,以便对datepicker的配置进行任何修改。 因此:
$(function() {
$('#date_caisse').removeClass('hasDatepicker');
$('#date_caisse').datepicker({
onSelect: function(dateText, inst) {
alert('overridden!');
}
});
});
试一试!
答案 1 :(得分:2)
注意:如果设置onSelect
选项,则datepicker会不触发元素的更改事件。
如果您有可能需要回复元素的change
事件,则需要记住在设置onSelect()
时自行触发更改事件,例如:
$(function(){
$('#date_caisse').datepicker({
onSelect: function (dateText, inst) {
alert('select!');
// Remember to fire the change event...
if (inst.input) {
inst.input.trigger('change');
};
}
});
});
使用onSelect
的替代方法是绑定到datepicker触发的dateSelected
事件。