输入propertyChange不使用jQuery datepicker

时间:2013-07-17 19:30:07

标签: javascript jquery

我正在使用jQuery UI datepicker小部件,我有一个脚本,当它们的值发生变化时应该对输入起作用。它绑定所有输入的'input propertyChange'和选择的'change'。

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

然后我注意到我可以对datepicker应用'onSelect'选项,但这似乎不适用于现有的datepicker,因为:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以在创建函数后动态绑定该函数:

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

请参阅已更新 demo

答案 1 :(得分:1)

也许这就是你要找的东西:

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

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