如何根据文本框具有焦点按Enter键来触发按钮单击事件?

时间:2010-07-14 16:40:40

标签: c# asp.net javascript form-submit

我有一个带有几个提交按钮的表单。我希望根据当前具有焦点的文本框按下输入时触发按钮的单击事件。我可以使用下面的代码指定一个按钮,方法是将onkeydown事件添加到页面主体并检查Enter的keyCode

<body onkeydown="if(event.keyCode==13){document.getElementById('btnSearch').click();}">
...
</body>

我假设可以修改此代码或调用函数执行条件以查看txtSearch或txtSubmit是否具有焦点并相应地指定btnSearch或btnSubmit,但我对javascript没有经验。

任何帮助/建议都会很棒!

3 个答案:

答案 0 :(得分:4)

您可以使用asp:Panel控件来帮助您。 asp:Panel具有“DefaultButton”,您可以在其中指定按钮的ID。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

这可能不是您所需要的,但它总是足以满足我的需求。

<asp:Panel runat="server" DefaultButton="btnSearch">
   <asp:TextBox id="txtSearch" runat="server" />
   <asp:Button id="btnSearch" runat="server" text="Start search" />
</asp:Panel>

<asp:Panel runat="server" DefaultButton="btnSubmit">
   ....
   <asp:Button id="btnSubmit" runat="server" text="Submit" />
</asp:Panel>

希望这会对你有所帮助。

此致

答案 1 :(得分:1)

第一个问题可能只是一个拼写错误,但你需要添加一个引号并删除上面代码中的分号。

<body onkeydown="if(event.keyCode==13){document.getElementById('btnSearch').click();}">
...
</body>

但我不认为捕捉全球击键事件是最好的方法。我会将onkeydown添加到实际的表单控件中,这样您就不会只是选择每个输入。另外,您可以在事件处理程序方法中指定调用一个参数,该参数指示正在使用的文本框。

<input type="text" onkeydown="KeyDownEventHandler(event, 1);" />

然后你只需编写处理所有关键捕获事件的方法:

function KeyDownEventHandler(e, box)
{
    var charCode = (e.which) ? e.which : event.keyCode
    if(charCode==13)
        document.getElementById('btnSearch' + box).click();
}

我更改了键码检测功能,以便更好地与其他浏览器配合使用。

答案 2 :(得分:0)

我终于得到了我追求的结果。我需要使用一个函数来停止触发默认的“enter”按钮,并使用另一个函数来触发正确的按钮的click事件。这是使用的脚本:

<script type="text/javascript">
function KeyDownEventHandler(e, box) {
    var charCode = (e.which) ? e.which : event.keyCode
    if (charCode == 13)
        document.getElementById(box).click();
}

function DisableEnterKey() {
    if (event.keyCode == 13) {
        return false;
    }
    else {
        return true;
    }
}
</script>

我从body的onkeydown事件调用了DisableEnterKey函数,从文本框的onkeydown事件调用了KeyDownEventHandler:

<body onkeydown="return DisableEnterKey()">
...
<input id="txtSearch" type="text" runat="server" onkeydown="KeyDownEventHandler(event, 'btnSearch');" />
...
<input id="txtAddEor" type="text" runat="server" onkeydown="KeyDownEventHandler(event, 'btnAddEor');" />
...
<input id="txtCategory" type="text" runat="server" onkeydown="KeyDownEventHandler(event, 'btnAddEor');" />