簡體   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