【问题标题】:trigger change event in cascading dropdown在级联下拉列表中触发更改事件
【发布时间】:2010-01-15 20:52:46
【问题描述】:

我正在使用来自http://stephenwalther.com/blog/archive/2008/09/07/asp-net-mvc-tip-41-creating-cascading-dropdown-lists-with-ajax.aspx 的级联下拉菜单。

我需要为下拉列表设置一个值,并调用 change 事件,以便级联下拉列表第一次看起来不空白。

但是更改事件并没有通过尝试调用:

            $('#Country').trigger('change');
                       or
            $('#Country').change();

如何调用此下拉菜单的更改事件来触发级联下拉菜单。

【问题讨论】:

  • 你的解决方案是什么?

标签: jquery asp.net-mvc cascadingdropdown


【解决方案1】:

您的下拉列表控件是服务器端(asp:dropdownlist 标记)还是客户端(选择标记)?

如果它们是服务器端的,则需要它为控件注入客户端 ID。这可能是没有触发事件的原因。

在 ASP.NET 中,服务器端控件具有不同的生成客户端 ID(因此 ID 为“Country”的 DropDownList 将具有类似于 ct01_ct050_Country 的客户端 ID。

在这些情况下,您可以在运行时将客户端 ID 注入到您的标记中,使用:

$('#<% Country.ClientID %>').change(function() {
    //code here
});

在运行时,呈现的代码/标记最终将如下所示:

$('#ct01_ct050_Country').change(function() {
    //code here
});

您避免客户端/服务器 ID 的另一个选择是将唯一的 CSS 类名称应用于控件并改为选择:

标记:

<asp:DropDownList ID="Country" CssClass="countryDD" runat="server" />

和 jQuery:

$('select.countryDD').change(function () {
    //code here
});

这个答案适用于直接的 ASP.NET。我不确定它是否与 MVC 相关,因为我不使用该框架,但我认为它在概念或标记与客户端代码方面非常接近。

希望这可能会有所帮助...

【讨论】:

  • 我正在使用 和 。尝试了我在问题中所说的选项,但这些选项没有运气。我正在为我的应用程序使用 asp.net mvc(C#)
  • 好的,在查看 MVC 之后,我发现您不需要像使用传统 ASP.NET 那样的客户端 ID。其他想法:您是否将代码包装在 $(document.ready(function(){ //code here }); 以确保页面准备就绪?您的示例代码也有 $("#Country").change(); . 你的真实代码中的语法是否正确? $('#Country').change(function(){ //code here }); 不知道你是否为了简单起见省略了“function(){}”部分只是完全错过了......
【解决方案2】:

对于我的级联下拉菜单,我使用 jquery onbind

$('#Country').on('change', function () {
  //Do stuff here

});

$('#Country').bind('change', function () {
  //Do stuff here

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2014-03-01
    相关资源
    最近更新 更多