我有一个带有几个提交按钮的表单。我希望根据当前具有焦点的文本框按下输入时触发按钮的单击事件。我可以使用下面的代码指定一个按钮,方法是将onkeydown事件添加到页面主体并检查Enter的keyCode
<body onkeydown="if(event.keyCode==13){document.getElementById('btnSearch').click();}">
...
</body>
我假设可以修改此代码或调用函数执行条件以查看txtSearch或txtSubmit是否具有焦点并相应地指定btnSearch或btnSubmit,但我对javascript没有经验。
任何帮助/建议都会很棒!
答案 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');" />