簡體   English   中英

Jquery ddl更改事件未觸發

[英]Jquery ddl Change event Not firing

我正在使用.NET 4和JQuery顯示/隱藏Div,這取決於從DDL中選擇的內容。 當我手動點擊下拉菜單時,Jquery會按預期觸發並顯示/隱藏字段。 但是當我以編程方式更改DDL的selectedValue時,Jquery根本不會觸發。 我有一個帶有兩個選項的單個ddl,單個和重復,我顯示所選的div並保持另一個隱藏。

$(document).ready(function () {
    $("#MainContent_ddlScheduleType").change(function () {
        $('#Single').hide();
        $('#Recurring').hide();
        var newSelection = "#" + this.value;
        $(newSelection).fadeIn('slow');
    });
});

在實際頁面內部有兩個下拉字段,第一個是當前數據庫表中所有作業的列表。 這些作業要么運行一次,要么多次運行(單次,重復)。 用戶從第一個下拉列表中選擇作業的名稱。 存儲過程從數據庫中提取該作業的信息,並將其存儲在客戶端變量中。 然后我比較該客戶端變量以決定是否應該更改下拉列表。 這是執行大部分工作的事件處理程序。 總而言之,當您從第一個下拉列表中選擇作業時,第二個下拉列表應該更改以反映它是否正在進行或單個(這成功發生!)但Jquery實際上並未顯示相應的單個/重復的Div這應該表明。

        protected void ddlJobList_SelectedIndexChanged(object sender, EventArgs e)
    {
        string  Frequency = null;
        SqlParameter sqlParameter = new SqlParameter("@JobName", ddlJobList.SelectedItem.Text);
        DataTable dt = SqlHelper.GetDataTable("zzGetJobInformation", CommandType.StoredProcedure, sqlParameter);

        if (!(dt.Rows[0]["Frequency"] is DBNull))
            Frequency = dt.Rows[0]["Frequency"].ToString();

        if (Frequency == null)
            ddlScheduleType.SelectedValue = "Single";
        else
            ddlScheduleType.SelectedValue = "Recurring";
    }

有什么理由不會導致Jquery開火?

我看了一下: jQuery下拉列表更改事件不是火

雖然我之前沒有使用過MVC,但我之前就可以將代碼與我看起來非常相似。 不幸的是,“解決方案”的鏈接不再有效,他們的答案不是很具描述性。 我可以肯定地說,在firebug中沒有報告控制台/ javascript錯誤。

這是競爭條件嗎? 您在什么時候以編程方式設置所選值? $(document).ready等待直到很晚(相對於生命周期)才能執行,這樣它就知道你在$(document).ready中試圖訪問的所有東西都已被渲染...

如果您在document.ready中任意設置所選值,則可以在創建事件之前調用它。

好的,這解釋得好一點。 混淆是混合服務器和客戶端代碼。 我建議使用一個或另一個來管理下拉列表和影響,而不是兩者。

使用這兩種方法你必須處理回發,webforms事件和維護客戶端(jquery)和服務器(.net)上的狀態,這是凌亂的。

我要么使用webforms來管理UI的狀態,要么使用jquery和ajax請求與頁面方法,asmx或其他類型的asp.net處理程序來管理UI的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM