5个文本框,2个按钮。如何将textBox分配给Button?

时间:2009-04-13 14:54:25

标签: c# .net asp.net

我想为我的用户提供使用文本框的选项,然后按Enter键。挑战在于我有5个文本框和2个选项。 3个文本框属于一个按钮,2个文本框属于另一个按钮。如何根据用户按Enter键时所在的文本框触发特定按钮?

3 个答案:

答案 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。