Javascript JQuery dropdownlist/select onchange事件未激发

Javascript JQuery dropdownlist/select onchange事件未激发,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我在asp.net表单中有以下dropodownlist/combobox/select元素: <asp:DropDownList ID="_ddlMode" runat="server" AppendDataBoundItems="true" ClientIDMode="Static" CssClass="input_medium" DataSourceID=&qu

我在asp.net表单中有以下dropodownlist/combobox/select元素:

<asp:DropDownList 
 ID="_ddlMode" 
 runat="server" 
 AppendDataBoundItems="true" 
 ClientIDMode="Static" 
 CssClass="input_medium" 
 DataSourceID="_sdsModes" 
 DataTextField="description" 
 DataValueField="id">
 <asp:ListItem Selected="True" Text="None" Value="" />
</asp:DropDownList>
不走运。然后我试了一下:

 $(function () {
    _ddlMode= $("input[id$='_ddlMode']");

    _ddlMode.change(
        function () {
           var _index = $("select[id='_ddlMode'] option:selected").index();
           SetModes(_txtBank, _txtZip, _index);
        }
    );
});
再一次没有运气。。。。错误在哪里? 有一种更有效的方法可以在事件处理中检索所选元素的索引吗


另外,我使用的是
jquery-.2.1.3
jquery-ui-1.11.2

因此,您愿意在
javascript
代码中找到一个方法,但它对您不起作用。它没有击中它的背后可能有很多原因,我会在这里写一些可能的原因,以及它们各自可能的解决方案

原因:
由于您使用jQuery将dropdownlist与更改事件绑定,因此我怀疑您的jQuery是否被正确引用

解决方案:
转到浏览器的“开发工具”
控制台
选项卡(
CTRL
+
SHIFT
+
I
),查看未加载jQuery是否有任何错误,如果有,请修复它


原因:
正如@freedomn-m在评论中指出的,在绑定事件时,您没有在
id
之前指定css选择器

解决方案:

$(function () {
   $(document.body).on('change', '#_ddlMode', function () {
       var _index = $("select[id='_ddlMode'] option:selected").index();
       SetModes(_txtBank, _txtZip, _index);
   });
 });

原因:
您的事件未绑定到所需的控件。这可能非常特定于
ASP.NET
Web表单,因为在构建Web应用程序时,您可能会遇到这种情况

因此,从技术上讲,
ASP.NET
可以在编译控件时修改控件的ID,这可能是不使用该方法的一个原因

例如,如果您有一个
ContentPlaceHolder
id
cph_1
ContentPlaceHolder,并将其标记为子页面,则
ASP.NET
将该id与您的每个嵌套服务器控件连接起来。因此,如果您有一个
文本框
,其中
id
tb1
,则在浏览该页面时,它会被修改为
cph1\u tb1

解决方案:
使用以下语法(
)绑定事件:

$(function () {
   $(document.body).on('change', '#<%= _ddlMode.ClientID %>', function () {
       var _index = $("select[id='<%= _ddlMode.ClientID %>'] option:selected").index();
       SetModes(_txtBank, _txtZip, _index);
   });
 });
$(函数(){
$(document.body).on('change','#',function(){
var_index=$(“选择[id='']选项:选中”).index();
设置模式(_txtBank,_txtZip,_index);
});
});

请参阅,如果您可以使用这些解决方案解决问题。

$(document.body)。on('change'、'u ddlMode'、
->
$(document.body)。on('change'、'u ddlMode'、
$(document.body)。on('change',选择[id='u ddlMode']),
因为您在下一行有这个,并且暗示您可能多次使用相同的ID。#是关键!:-)
$(function () {
   $(document.body).on('change', '#<%= _ddlMode.ClientID %>', function () {
       var _index = $("select[id='<%= _ddlMode.ClientID %>'] option:selected").index();
       SetModes(_txtBank, _txtZip, _index);
   });
 });