我在ASP.NET网页表单中有以下代码:
$(document).ready(function () {
myListBox_OnChangeHandler();
});
function myListBox_OnChangeHandler() {
$('#<%= myListBox.ClientID %>').change(function () {
alert('Worked');
});
}
这是我的ListBox:
<asp:ListBox ID="myListBox" runat="server" SelectionMode="Multiple" AutoPostBack="True" OnSelectedIndexChanged="myListBox_SelectedIndexChanged" />
将处理程序连接到ListBox的jQuery
事件的change
实际上有效,但有点好。每次进行新选择时,该方法称为复合次数。例如,单击1,无警报,单击2,2警报,单击3,4警报等。并非此方法中存在alert
真实(我也尝试过声明变量和放置断点并移除alert
并且它仍然表现相同),但我想确保它有效。
但是,如果我更改了我的ListBox
并定义了其onchange
客户端事件并将其指向下面的方法,那就可以了:
<asp:ListBox ID="ui_lbxAdUsers" runat="server" SelectionMode="Multiple" AutoPostBack="True" onchange="myListBox_OnChangeHandler();" OnSelectedIndexChanged="myListBox_SelectedIndexChanged" />
...并将JS
更改为:
function myListBox_OnChangeHandler() {
alert('Worked');
}
......一切都很完美。我更喜欢通过$(document).ready
函数和jQuery
以有条理的方式连接我的处理程序,但重复调用是该方法的showstopper。
为什么在ListBox
中为每次点击更改使用第一个方法导致方法调用复合次数,但在我声明onchange
事件的第二个方法中没有发生控制?