我想为我的用户提供使用文本框的选项,然后按Enter键。挑战在于我有5个文本框和2个选项。 3个文本框属于一个按钮,2个文本框属于另一个按钮。如何根据用户按Enter键时所在的文本框触发特定按钮?
答案 0 :(得分:12)
我自己完成了这个,我有一个页面,有两种不同的用户类型的登录表单。我所做的是将两个表单分成他们自己的ASP面板控件,并在面板上将DefaultButton设置为我希望的任何一个。这样当他们完成在表单中键入并按下回车键时,它将在正确的按钮上提交。
示例强>:
<asp:Panel id="panel1" DefaultButton="button1">
<asp:textbox id="textbox1"/>
<asp:textbox id="textbox2"/>
<asp:buton id="button1"/>
</asp:panel>
<asp:panel id="panel2" DefaultButton="button2">
<asp:textbox id="textbox3"/>
<asp:textbox id="textbox4"/>
<asp:button id="button2"/>
</asp:panel>
编辑:这是another method如何通过为文本框分配OnKeyPress属性来实现的。 这是一个单独的解决方案,而不是我在顶部描述的
示例强>:
function clickButton(e, buttonid){
var evt = e ? e : window.event;
var bt = document.getElementById(buttonid);
if (bt){
if (evt.keyCode == 13){
bt.click();
return false;
}
}
}
//code behind
TextBox1.Attributes.Add("onkeypress",
"return clickButton(event,'" + Button1.ClientID + "')");
后面的代码生成以下代码:
<input name="TextBox1" type="text" id="TextBox1" onkeypress="return
clickButton(event,'Button1')" />
答案 1 :(得分:4)
在这种情况下,我会将相关的文本框和按钮分组到Panel中。 Panel具有您可以使用的DefaultButton属性。 DefaultButton = “IdOfTheDefaultButtonForControlsInThisPanel”
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx
答案 2 :(得分:1)
使用jQuery这很容易实现:
$(function ()
{
$("#id-of-textbox-1, #id-of-textbox2, etc.").keyup(function (e)
{
if (e.keyCode === 13) $("#id-of-submit-button-1").click();
});
// And for the second group
$("#id-of-textbox-3, #id-of-textbox4, etc.").keyup(function (e)
{
if (e.keyCode === 13) $("#id-of-submit-button-2").click();
});
});
如果您使用的是ASP.NET Button 控件,请确保将属性UseSubmitBehavior
设置为false。