【问题标题】:Stop Enter key from firing button click event从触发按钮单击事件中停止输入键
【发布时间】:2013-06-14 21:32:59
【问题描述】:

我希望这很容易,但我已经看过但找不到适合我的解决方案。我有一个带有 2 个用户控件的 aspx 页面。一个是带有旋转自动完成文本框的用户控件,我希望“Enter”键导致回发。

我在页面上的另一个控件中有一个按钮,onClick 执行其他操作。当我将文本放入“自动完成”并按 Enter 时,按钮的 onClick 会触发。有没有办法让输入键不会导致 onClick 触发。

我尝试了一些 javascript 来禁用输入键,但这会破坏我的文本框输入。

我有什么选择。

编辑 1

这是我的一些标记

<uc:CompanyAC runat="server" ID="ac" />
<cc2:GenericGridView OnHtmlDataCellPrepared="HtmlDataCellPrepared"
KeyFieldName="CompanyID" ID="gridCompanies" DataSourceID="ManageCompaniesObjectDataSource" runat="server" 
AutoGenerateColumns="False" />

CompanyAC 控件有一个带有一些 jquery 的文本框,可以自动完成 WS 调用(无需显示

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

GenericGridView 控件包含一个按钮

<asp:Button runat="server" ID="Button" Text="New" AllowFocus="false" OnClick="Button_Click" />

所以发生的情况是,当焦点位于文本框上时按下 Enter 键时,另一个控件中的按钮会触发其 onclick。我不希望这种情况发生,但我仍然希望回发发生

【问题讨论】:

  • 您能否发布一些您的标记,以便我们了解您的情况?

标签: c# javascript asp.net onclick


【解决方案1】:

试试这个

$('input').keypress(function(event){
        if(event.keyCode==13)
        {
            event.preventDefault();

            }
        })

【讨论】:

    【解决方案2】:

    如果你使用 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
    • 如果这会停止点击,您可以设置一个计时器来提交表单。这是一个相当黑客,但会工作..添加到示例。
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多