0

我正在使用 jQuery UI datepicker 小部件,并且我有一个脚本,它应该在输入值发生变化时对其进行操作。它为所有输入绑定到“input propertyChange”,为选择绑定到“change”。

问题在于 datepicker 小部件,它仅在用户手动输入 datepicker 的文本框时才获取事件。如果他们使用 UI 日历为其选择日期,则输入的值确实会改变,但事件永远不会触发!

然后我注意到我可以将“onSelect”选项应用于日期选择器,但这似乎不适用于现有的日期选择器,如下所示:

if (input.hasClass('hasDatepicker')) {
                        input.datepicker({
                            onSelect : function (dateTxt, element) {
                                alert('updated '+dateTxt);
                            }
                        });
                    }

警报永远不会出现,我猜是因为它希望您仅在创建小部件时应用 onSelect 。

但是我想要创建一个通用脚本,它可以根据需要将自身附加到某些页面,因此我需要它是松散耦合的。这个日期选择器的功能似乎非常僵化,不适合灵活。我还尝试在我需要的每个日期选择器上添加一个显式 onSelect 并在 onSelect 中仅调用 .change() 以希望至少让它触发通用输入 propertyChange 处理程序,但它仍然不起作用!

关于如何让外部处理程序在不为每个日期选择器明确编码的情况下获取日期选择器更新的任何其他想法?

4

2 回答 2

1

您可以在创建函数后动态绑定函数,如下所示:

$('.datepicker').datepicker("option", "onSelect", 
   function (dateTxt, element) {
                                alert('updated '+dateTxt)

查看更新的 演示

于 2013-07-17T19:35:17.380 回答
1

也许这就是你正在寻找的:

$(document.body).on('change keyup','.datepicker',function(){    
    alert('updated ' + this.value)
});

http://jsfiddle.net/qebkB/6/

于 2013-07-17T19:53:53.317 回答