未触发 JQuery 下拉列表/选择 onchange 事件

我在 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>

SetModes()当用户更改所选元素时,我需要调用函数。我试过这个:


 $(function () {

   $(document.body).on('change', '_ddlMode', function () {

       var _index = $("select[id='_ddlMode'] option:selected").index();

       SetModes(_txtBank, _txtZip, _index);

   });

 });

没有运气。然后我试了这个:


 $(function () {

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


    _ddlMode.change(

        function () {

           var _index = $("select[id='_ddlMode'] option:selected").index();

           SetModes(_txtBank, _txtZip, _index);

        }

    );

});

再次没有运气......错误在哪里?有更有效的方法来检索事件处理中所选元素的索引吗?


PS我正在使用jquery-.2.1.3,jquery-ui-1.11.2


大话西游666
浏览 137回答 1
1回答

慕勒3428872

所以,你愿意在你的javascript代码中使用一个方法,但它不适合你。它没有击中它的背后可能有很多原因,我会在这里写一些可能的原因及其各自可能的解决方案。原因:由于您使用 jQuery 将下拉列表与更改事件绑定,我怀疑您的 jQuery 是否被正确引用。解决方案:转到浏览器的开发工具选项console卡 ( CTRL++ ) 并查看是否存在未加载 jQuery 的任何错误,如果是则修复它SHIFT。I原因:在绑定事件#之前,您没有指定 css 选择器。id解决方案:$(function () {   $(document.body).on('change', '#_ddlMode', function () {       var _index = $("select[id='_ddlMode'] option:selected").index();       SetModes(_txtBank, _txtZip, _index);   }); });原因:您的事件未绑定到所需的控件。这可能非常特定于ASP.NETWeb 窗体,因为您在构建 Web 应用程序时可能会遇到它。因此,从技术上讲,ASP.NET可以在编译控件时修改控件的 ID,这可能是未命中该方法的可能原因。例如,如果您有一个ContentPlaceHolder带有一个idofcph_1并且其中有标记作为您的子页面,那么ASP.NET将将该 id 与您的每个嵌套服务器控件连接起来。因此,如果您在该内容占位符中有一个textbox带有一个idof ,则在浏览该页面时它会被修改为。tb1cph1_tb1解决方案:借助此语法 ( <%%>) 绑定您的事件,如下所示:$(function () {   $(document.body).on('change', '#<%= _ddlMode.ClientID %>', function () {       var _index = $("select[id='<%= _ddlMode.ClientID %>'] option:selected").index();       SetModes(_txtBank, _txtZip, _index);   }); });看看您是否可以使用这些解决方案解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript