Javascript 在jQuery中将Enter键代码替换为TAB键代码

Javascript 在jQuery中将Enter键代码替换为TAB键代码,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我有一个javascript脚本,用TAB键替换Enter: 我是这样用的: txt.Attributes.Add("OnKeyDown", "ReplaceEnterWithTab();"); 这个代码工作很好。现在我想用jQuery开发一个脚本,它不需要添加 OnKekOnt[/COD>属性]。请考虑这个示例页面: <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" run

我有一个javascript脚本,用TAB键替换Enter:

我是这样用的:

txt.Attributes.Add("OnKeyDown", "ReplaceEnterWithTab();");
<>这个代码工作很好。现在我想用jQuery开发一个脚本,它不需要添加<代码> OnKekOnt[/COD>属性]。请考虑这个示例页面:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="TextBox1" runat="server" CssClass="EntTab"></asp:TextBox>
    <br />
    <br />
    <asp:TextBox ID="TextBox2" runat="server" CssClass="EntTab"></asp:TextBox>
    <br />
    <br />
    <asp:DropDownList ID="DropDownList1" runat="server" CssClass="EntTab">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
    </asp:DropDownList>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</div>
</form>
问题是当我在
TextBox1
上按Enter键时,
按钮1
导致页面发回。我怎样才能解决这个问题


谢谢

您忘记取消事件传播,请将
return false
添加到按键回调:

$(document).ready(function () {
    $('.EntTab').on('keydown', function (e) {
        if (e.keyCode == 13) e.keyCode = 9;
        return false;
    });
});
此外,ASP.NET中的按钮标记默认情况下具有
UseSubmitBehavior
,这会导致按钮呈现为
input type=“submit”
标记。尝试将其设置为false,以获得如下回答中所述的行为:

尝试:

$(document).ready(function () {
    $(".EntTab").bind("keypress", function(e) {

        if (e.keyCode == 13) {
            var inps = $("input, select"); //add select too
            for (var x = 0; x < inps.length; x++) {
                if (inps[x] == this) {
                    while ((inps[x]).name == (inps[x + 1]).name) {
                    x++;
                    }
                    if ((x + 1) < inps.length) $(inps[x + 1]).focus();
                }
            }   e.preventDefault();
        }
    });
});
$(文档).ready(函数(){
$(“.EntTab”).bind(“按键”,函数(e){
如果(e.keyCode==13){
var inps=$(“输入,选择”);//也添加选择
对于(变量x=0;x

您的意思是这样的吗。

您是否尝试在if语句之前添加
e.preventDefault()
?它不起作用。请尝试添加e.preventDefault()@sundhir:我不想在我的文本输入中添加
\t
。我想将焦点设置为下一个控件感谢它对
输入
s有效,我将其更改为
.EntTab
。它有一个问题,当
下拉列表1
获得焦点,我按下
输入
键时,我收到一条错误消息请查看编辑的代码,添加选择,应该也适用于下拉菜单抱歉,但另一个问题是您的代码导致我无法在文本框中输入任何文本为什么不在您的body标签上使用
keydown
调用
ReplaceEnterWithTab
?这样,所有元素都将工作。链接:
$(document).ready(function () {
    $('.EntTab').on('keydown', function (e) {
        if (e.keyCode == 13) e.keyCode = 9;
        return false;
    });
});
$(document).ready(function () {
    $(".EntTab").bind("keypress", function(e) {

        if (e.keyCode == 13) {
            var inps = $("input, select"); //add select too
            for (var x = 0; x < inps.length; x++) {
                if (inps[x] == this) {
                    while ((inps[x]).name == (inps[x + 1]).name) {
                    x++;
                    }
                    if ((x + 1) < inps.length) $(inps[x + 1]).focus();
                }
            }   e.preventDefault();
        }
    });
});