onKeypress在Chrome中不起作用的文本字段上的Enter Key事件

onKeypress Enter Key event on textfield not working in Chrome

本文关键字:Enter Key 事件 字段 文本 Chrome 不起作用 onKeypress      更新时间:2023-09-26

我有一个与这里所问的问题相同的问题,关于如何在chrome中处理回车键。

我试图实现的效果是,当焦点集中在当前字段中时,允许回车键调用一个按钮的点击事件。为了实现这一点,我使用以下代码:

javascript:

 <script type="text/javascript">
//attempting to capture keypress for chrome here but this is not working
        $("#txtContainer").keypress(function (e) {
            if (e.keyCode == '13') {
                e.preventDefault();
                doClick(buttonname, e);
                return false;
            }
        });
        function doClick(buttonName, e) {
            var key;
            if (window.event)
                key = window.event.keyCode;     //IE
            else
                key = e.which;     //firefox
            if (key == 13) {
                var btn = document.getElementById(buttonName);
                if (btn != null) { 
                    btn.click();
                    event.keyCode = 0
                } 
            }
        }
</script>

在aspx 中

 <form id="form1" runat="server">
    <div>
    <asp:LinkButton ID="newBtn" runat="server" OnClick="btnLogin_Click" Text="ASP Link" />
    <asp:TextBox ID="txtContainer" runat="server" Width="100" />
    <asp:Label ID="time_lbl" runat="server" />
    </div>
    </form>

在代码背后aspx.cs

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtContainer.Attributes.Add("onKeyPress", "doClick('" + newBtn.ClientID + "',event)");
            }
        }       
        public void btnLogin_Click(object sender, EventArgs e)
        {
            time_lbl.Text = txtContainer.Text;
        }

上面的代码在FF和IE中运行良好,但是chrome继续提交整个表单,而不是在enterkey上捕获按键。

谢谢你的建议。

我想说,使用"keyup"而不是"keypress"应该可以解决您的问题

您可以在按键事件中尝试此操作

    $("#txtContainer").keypress(function (e) {
        e.preventDefault();
        var key = window.event ? e.keyCode : e.which;
        if (key == '13') {
            doClick(buttonname, e);
        }
    });

注意:var key=window.event?e.keyCode:e.which;和e.preventDefault()应该放在第一位,并返回false;不需要,因为您使用了e.preventDefault()。

这也应该完成任务:

var key = e.keyCode || e.which;
if(key === 13 { /* your code */ }