我复制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

这个拼图有太多的碎片所以任何帮助都会受到赞赏 . 谢谢 .