【问题标题】:JQuery ASP.NET .change event not firingJQuery ASP.NET .change 事件未触发
【发布时间】:2013-01-24 15:08:24
【问题描述】:

我知道这个问题被问了很多,但似乎对我没有任何帮助。我已经阅读了很多问题和答案。

我正在使用 JQuery 事件来处理 ASP.NET 控件的事件,但该事件不会触发。

这是我尝试过的:

我的下拉列表:

<asp:DropDownList ID="List_ValueStream" runat="server" Width="195px" />

我尝试将事件添加到 DropDownList,都单独测试:

在:

    <script src="http://code.jquery.com/jquery.min.js" type="text/javascript">
          ...
    </script>

/

    $(document).ready(function () {
        $("#<%=List_ValueStream.ClientID%>").change(function () {
            alert('1 Handler for .change() called.');
        });
    });

/

    $(document).ready(function () {
        $("#List_ValueStream").change(function () {
            alert('2 Handler for .change() called.');
        });
    });

/

    $(document).ready(function () {
        $("#List_ValueStream").on('change', function () {
            alert('3 Handler for .change() called.');
        });
    });

/

    $("#<%=List_ValueStream.ClientID%>").change(function () {
          alert('4 Handler for .change() called.');
    });

/

    $("#List_ValueStream").change(function () {
        alert('5 Handler for .change() called.');
    });

【问题讨论】:

  • 你试过删除 runat="server" 吗?您是否在 chrome/ff/IE 开发者控制台中遇到任何错误?
  • 当你在浏览器中查看页面的HTML源代码时,id实际上是List_ValueStream吗?你会看控制台检查 JavaScript 错误吗?
  • 是否可以使用简单的&lt;select id="List_ValueStream"&gt;
  • 这就是他尝试使用ClientID的原因
  • &lt;script&gt;&lt;/script&gt; 标签内的 $(document).ready() 代码是用于加载 jQuery 还是在单独的 &lt;script&gt; 标签内?如果是前者,请将其移至其自己的&lt;script&gt; 标签。

标签: jquery asp.net onchange


【解决方案1】:

你有没有在这两行之间写过脚本。然后在一个单独的脚本标签中编写你的脚本,如下所示

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript">

</script>


<script src="http://code.jquery.com/jquery.min.js" type="text/javascript">
</script>

<script type="text/javascript">
 $(document).ready(function () {
    $("#<%=List_ValueStream.ClientID%>").change(function () {
        alert('1 Handler for .change() called.');
    });
});
</script>

我认为只有这个可能是原因。否则没关系。
如果您使用的是 asp.net 4.0 或更高版本,则可以利用 ClientIDMode=static。它不会改变你控制的ID如下

 <asp:TextBox ID="txtEcho2" runat="server" ClientIDMode="Static" /> 

这样你就可以摆脱 ClientId

【讨论】:

    【解决方案2】:

    你可以这样使用,效果很好

    <asp:DropDownList ID="List_ValueStream" runat="server" Width="195px" onchange="youfunction();"/>
    

    【讨论】:

    • 它工作,虽然它不是我所需要的。不过还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多