有没有办法延迟下拉列表的自动返回,直到列表真正失去焦点?我想接受来自键盘的输入,而不是在每次击键后返回页面。例如,以下面的代码为例:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem >Test1</asp:ListItem>
<asp:ListItem >Tst1</asp:ListItem>
<asp:ListItem >twotest</asp:ListItem>
</asp:DropDownList>假设我想选择两个测试。我用Tab键切换到ddl并在键盘上输入'tw‘。但是,一旦输入“t”,页面就会自动回发,而“w”输入则会丢失。重置焦点实际上没有任何帮助,因为ddl认为'w‘是第一个输入。任何帮助都将不胜感激。
发布于 2013-01-09 03:03:15
这似乎是不可能的。您必须移除AutoPostBack="true“,然后尝试另一种方法来执行回发。考虑以下解决方案:
当dropdown ddlCountry更改时,将调用函数dropdown来触发btnLoad click以执行回发。按钮btnLoad被放在更新面板中,这样页面就不会重新加载,您仍然可以将焦点放在下拉列表上。
<script type="text/javascript">
function ddlCountry_changed() {
document.getElementById('<%= btnLoad.ClientID %>').click();
}
</script>
Country:
<asp:DropDownList ID="ddlCountry" runat="server" onchange="ddlCountry_changed();">
<asp:ListItem Text="Vietnam" Value="1"></asp:ListItem>
<asp:ListItem Text="United State" Value="2"></asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
<asp:Button ID="btnLoad" style="display: none" runat="server" OnClick="btnLoad_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>发布于 2013-07-10 08:50:36
这比仅仅处理模糊要复杂一点。您需要删除onchange属性(AutoPostBack="false"),以便可以进行键盘导航,并附加事件处理程序,当通过单击、模糊或按Enter键更改值时,这些事件处理程序将提交表单。
我遇到了同样的问题,并创建了一个插件来处理这个问题。查看https://github.com/bstruthers/AutoPostBack-Fix。
https://stackoverflow.com/questions/14222005
复制相似问题