阻止回车键触发按钮点击事件

3
我希望这很容易,但我已经找了一些解决方案,但都不适用于我。我有一个包含两个用户控件的aspx页面。其中一个是带有自动完成文本框的用户控件,我希望“Enter”键会导致页面回发。
另一个控件中有一个按钮,其onClick执行其他操作。当我在自动完成中输入文本并按下Enter键时,按钮的onClick会触发。有没有办法让Enter键不触发onClick?
我尝试了一些JavaScript来禁用Enter键,但这破坏了我的文本框输入。
我的选择是什么?
编辑1:
以下是我的一些标记:
<uc:CompanyAC runat="server" ID="ac" />
<cc2:GenericGridView OnHtmlDataCellPrepared="HtmlDataCellPrepared"
KeyFieldName="CompanyID" ID="gridCompanies" DataSourceID="ManageCompaniesObjectDataSource" runat="server" 
AutoGenerateColumns="False" />

公司AC控件有一个文本框,其中包含一些jQuery代码,用于自动完成Web服务调用(无需显示)。

<asp:TextBox ID="searchbox" runat="server" Width="400px" />

通用网格视图控件包含一个按钮。
<asp:Button runat="server" ID="Button" Text="New" AllowFocus="false" OnClick="Button_Click" />

当焦点在文本框上时,按下回车键会触发其他控件中的按钮单击事件。我不希望这种情况发生,但仍然希望进行页面回传。


2
请你能否发布一些你的标记代码,这样我们就能看到你所做的工作了? - Jay
2个回答

1
尝试这个。
$('input').keypress(function(event){
        if(event.keyCode==13)
        {
            event.preventDefault();

            }
        })

0
如果您正在使用jQuery,可以尝试以下代码:
$('input').on('keypress', function(e){
    // Attempt form submit (after event function exits).
    var f = $(this).parents('form');
    setTimeout(function(){f.submit();}, 1);

    // Return false to prevent form submit when enter key is pressed.
    return !((window.event) ? window.event.keyCode : e.which)==13);
});

但是我确实希望提交表单,只是不想触发onclick事件。 - Isaac Levin
如果这会停止 onclick,你可以设置一个计时器来提交表单。这是一种比较巧妙的方法,但是可以实现。在示例中添加。 - prothid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接