我复制this solution to make the enter key behave like the tab one,它在帖子中说它应该正常工作 . 我的问题是焦点不是在输入(文本框)之间改变 .
解决方案的特点如下:
1.我添加的解决方案是ASP .Net Web表单应用程序 .
2.支持的浏览器是 IE8
3. jQuery版本是1.3.1
4.涉及Ajax更新面板和脚本管理器代理 .
有问题的页面定义如下:
<asp:ScriptManagerProxy runat="server" ID="myScriptManager">
<Scripts>
<asp:ScriptReference Path="~/Scripts/MyScripts.js"/>
</Scripts>
</asp:ScriptManagerProxy>
<div id="content">
<asp:UpdatePanel runat="server" ID="myUpdatePanel">
<ContentTemplate>
<script type="text/javascript">Sys.Application.add_load(aJavascriptClass.aJavascriptMethod)</script>
<div id="MainDiv">
<div id="someList">
<asp:ListView runat="server" ID="myListView">
<LayoutTemplate>
<table width="98%">
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
<th>Column 4</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td class="single-element">
<asp:Label runat="server" ID="lblColumn1" Text='<%# Eval("Column1") %>'></asp:Label>
</td>
<td class="single-element">
<asp:Label runat="server" ID="lblColumn2" Text='<%# Eval("Column2") %>'></asp:Label>
</td>
<td class="single-element">
<asp:TextBox runat="server" ID="txtColumn3" Text='<%# Eval("Column3") %>' CssClass="display-data"></asp:TextBox>
</td>
<td class="single-element">
<asp:Label runat="server" ID="lblColumn4" Text='<%# Eval("Column4") %>'></asp:Label>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
脚本管理器代理中引用的javascript文件是这样的:
var aJavascriptClass = {
aJavascriptMethod: function () {
$(".display-data").keydown(function (event) {
if (event.which == 13) {
event.preventDefault();
$(this).nextAll(".display-data:first").focus();
}
});
}
};
$(document).ready(function () {
aJavascriptClass.aJavascriptMethod();
});
因此,当页面加载时,列表视图为空,用户执行某些操作,在回发后,列表视图包含带有文本框的数据 . 当焦点位于任何文本框上时,输入键功能将被阻止,因此页面不会回发,但焦点不会移动到下一个文本框 .
在使用IE中的开发工具进行调试并查看jQuery结果的内容时,我得到以下结果:
$(this).val() - 获取具有焦点的文本框的内容
$(this).nextAll(".display-data").val() - 返回undefined
$(this).nextAll(".display-data:first").val() - 返回undefined
$(this).nextAll() . length - 返回0
这个拼图有太多的碎片所以任何帮助都会受到赞赏 . 谢谢 .