2012-06-14 23 views
7

Mi sono imbattuto in un piccolo problema con un'applicazione Web ASP.NET.Link ASP.NET Inserire il tasto con i pulsanti?

Ho ottenuto un paio di pulsanti sulla mia pagina a cui voglio accedere premendo il tasto Invio (A seconda di quale sia il TextBox attivo).

Google mi ha aiutato, ho pensato, ma no.

Questo è quello che ho trovato:

tbEmail.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('" + btRegister.UniqueID + "').click();return false;}} else {return true}; "); 

Questo non sembra funzionare, preme ancora un altro pulsante che io non voglio essere premuto in questo momento.

Qualche suggerimento?

risposta

21

Sembra che si sta utilizzando Web Form.

È possibile eseguire il wrapping di ciò che si sta facendo all'interno di un Panel e impostare la proprietà DefaultButton all'interno del pannello.

<asp:Panel ID="LoginPanel" runat="server" DefaultButton="btLogin"> 
    <asp:TextBox ID="txtUser" runat="server" /> 
    <asp:TextBox ID="txtPass" runat="server" /> 
    <asp:Button ID="btLogin" runat="server">Login</asp:Button> 
</asp:Panel> 

Quando l'utente ha inserito i dati in entrambe le txtUser e txtPass e quindi premere il tasto Invio, si attiveranno il pulsante btLogin.

+0

Grazie per le informazioni dettagliate, mi ha davvero aiutato! – James

+0

Stavo modificando la pagina di riserva 'Login.aspx' e funziona altrettanto bene anche lì. Il pulsante mancava di proprietà ID e CommandName era così non era sicuro se avrebbe funzionato. – strider

3

Utilizzare jQuery per questo è molto più semplice. Associare all'evento keypress.

+1

Sono d'accordo. jQuery racchiude tutti quei dettagli cattivi ed è una manna dal cielo. – Jeremy

+1

Grazie per la risposta, andando a usare questo in futuro di sicuro! – James

4

Non cercare di utilizzare il codice JavaScript - mettere il modulo all'interno di un <asp:Panel> e impostare la proprietà DefaultButton di essere l'id del pulsante.

0

è possibile utilizzare un evento Pressione per ogni testo che farà cose diverse .. quindi:

private void a_keyPress(object sender, KeyPressEventArgs e) 
{ 
    RadTextBox myBox = (RadTextBox)sender; 

    if (e.KeyChar == (char)Keys.Return) 
    { 
     if (myBox.ID == "textbox1") 
     // then do stuff... 
    } 
    else if //do stuff... 
} 
Problemi correlati