Javascript JQuery dropdownlist/select onchange事件未激发
我在asp.net表单中有以下dropodownlist/combobox/select元素: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: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);
});
});