gpt4 book ai didi

JQuery Datepicker OnSelect 和 TextChanged 问题

转载 作者:行者123 更新时间:2023-12-03 22:49:10 24 4
gpt4 key购买 nike

自从将 OnSelect 添加到我的 Datepicker 后,该控件不再触发 TextChanged 事件。我的代码如下:

$(function() {
$("#<%=txtStartDate.ClientID %>").datepicker({
minDate: 0,
dateFormat: 'dd-M-yy',
onSelect: function(dateText, inst) {
var theDate = new Date(Date.parse($(this).datepicker('getDate')));
$("#<%=txtEndDate.ClientID %>").datepicker('option', 'minDate', theDate);
}
});

$("#<%=txtEndDate.ClientID %>").datepicker({
dateFormat: 'dd-M-yy'
});
});

<%-- etc ---- %>

<asp:TextBox ID="txtStartDate" runat="server" AutoPostBack="true" OnTextChanged="txtStartDate_TextChanged"></asp:TextBox>

我的其他日期选择器 (txtEndDate) TextChanged 事件确实触发,因此只能将其归因于为 txtStartDate 控件定义的 OnSelect。

非常感谢对此的任何帮助。干杯!

最佳答案

对 jQuery UI Datepicker 源进行简短检查后,解决方案是自己触发更改事件

...
onSelect: function(dateText, inst) {
var theDate = new Date(Date.parse($(this).datepicker('getDate')));
$("#<%=txtEndDate.ClientID %>").datepicker('option', 'minDate', theDate);
if (inst.input)
inst.input.trigger('change');
}
...

其原因是 jQuery UI Datepicker 源代码中的以下几行

if (onSelect)
// trigger custom callback
onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
else if (inst.input)
// fire the change event
inst.input.trigger('change');

如您所见,如果 datepicker 实例是一个 input 字段,则 jQuery UI Datepicker 默认会触发 change 事件,但如果您指定了自定义 onSelect 处理程序(就像您所做的那样)。

您可能会说,实际上这是正确的行为,因为它保证了您最大的可配置性。您可以决定是否希望 change 事件以这种方式发生。

但我同意这种行为也许应该被记录下来。

关于JQuery Datepicker OnSelect 和 TextChanged 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com