【问题标题】:Call a Javascript function on dropdownlist change在下拉列表更改时调用 Javascript 函数
【发布时间】:2015-06-11 22:17:55
【问题描述】:

我正在使用 Visual Studio 2013 WebForms,并且在更改下拉列表 (Asp:DropDownList) 时尝试调用 javascript 函数。 但是,我对这种行为完全感到困惑。有人可以告诉我有什么问题吗?

这行得通

 <asp:DropDownList ID="ddlList" CssClass="form-control" onchange="alert(1)"  runat="server"></asp:DropDownList>

但这没有任何反应

$(document).ready(function () {
    function test() {
        alert(1);
    }
});

    <asp:DropDownList ID="ddlList" CssClass="form-control" onchange="test()"  runat="server"></asp:DropDownList>

这也不起作用

$(document).ready(function () {
    $('#ddlList').change(function(){
        alert(1);
    });
});

<asp:DropDownList ID="ddlList" CssClass="form-control" runat="server"></asp:DropDownList>

hide() 函数工作正常,所以我相信 jquery 本身可以工作。

$("#divTextbox").hide();

这一定是一件简单的事情,但我已经同意了..

【问题讨论】:

  • onchange 不起作用时是否有任何控制台错误?你确定你正确地标记了脚本吗?
  • 我正在使用 FIrebug 进行调试,但没有收到任何错误消息..
  • 尝试将 JS 更改为在 CSS 上运行而不是在 ID-$('.form-control').change... 上运行吗?
  • 啊,是的,它适用于类名。那是什么意思??我应该使用类名还是有办法让它与 ID 名称一起使用?
  • 那么Halcyon的解决方案是正确的(:我强烈建议您更改ClientIDMode,这样您就不必每次尝试解决一个元素时都走一遍。如果您需要有关如何处理的详细信息这样做,只要问它,我会回答。

标签: javascript c# jquery asp.net webforms


【解决方案1】:

你需要修改你的选择器

$("#<%=ddlList.ClientID%>").change(function() {
    // do stuff here...
});

您拥有的 jQuery 选择器以服务器控件的 id 为目标,但是当服务器发回响应时,该 id 会变成一些垃圾,例如 ct100_ddlList。您还可以在服务器控件上将 ClientIDMode 设置为 state。

【讨论】:

  • 完美运行!!谢谢!我会在 5 分钟内接受你的回答(所以我还不允许点击接受按钮)
【解决方案2】:

如果您想在 javascript 中使用完全相同的名称,可以对 ddlList 使用 ClientIDMode="Static"。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多