繁体   English   中英

在日期选择器中选择日期会触发错误的事件

[英]Selecting date in datepicker fires wrong event

我的网站上有两个元素

<asp:DropDownList CssClass="SelectionDDL" ID="ddlClientMapFilter" runat="server"></asp:DropDownList>

以及页面上的其他地方

<asp:TextBox ID="tbFromDate" runat="server" OnTextChanged="ddl_ReportFilterChanged"></asp:TextBox>
<asp:TextBox ID="tbToDate" runat="server" OnTextChanged="ddl_ReportFilterChanged"></asp:TextBox>

在javascript中

$(function(){
    $(document).on("change", $("#ddlClientMapFilter"), function() {
         RefreshMapList();
    });
});

以及Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(OnAsychPostback);页面上的其他Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(OnAsychPostback);

function OnAsychPostback(s, e) {
$("#tbFromDate").datepicker({
            defaultDate: "-1",
            changeMonth: true,
            numberOfMonths: 3,
            onClose: function (selectedDate) {
                $("#tbToDate").datepicker("option", "minDate", selectedDate);
            }
        });
        $("#tbToDate").datepicker({
            //defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onClose: function (selectedDate) {
                $("#tbFromDate").datepicker("option", "maxDate", selectedDate);
            }
        });
}

现在奇怪的部分。

一切似乎都正常,除了每次我使用任何日期选择器选择日期时都会触发下拉事件。 我知道解决方案很简单,添加并检查事件的目标是否为下拉列表,但是我想知道如何不触发该事件,此外,在该事件旁边还有很多其他事件,并且只有这个事件被解雇了。

显然某个地方有一个错误,但我不知道如何找到它的任何想法?

这是因为on()的第二个参数(使用委托语法)必须是选择器字符串,而不是jQuery对象

$(function(){
    $(document).on("change", "#ddlClientMapFilter", function() {
         RefreshMapList();
    });
});

演示: 小提琴

在演示中,仅在#x元素更改时才触发第一个处理程序,而在任何输入更改时都将触发第二个处理程序。

根本原因似乎是,如果第二个参数不是字符串,则将其视为数据参数(您可以检查事件对象的data属性以对此进行测试)...

演示: 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM