343 messaggi dal 26 agosto 2007
Ciao sto facendo un form di login e vorrei che quando l'utente preme il tasto invio nel TextBox del nome utente o della password, è come se premesse il bottone Login. Come posso fare? Graziee!!

Lunga vita e prosperità!!
Ciao,

<form id="Form1"

    defaultbutton="SubmitButton"

    defaultfocus="TextBox1"

    runat="server">


Fabrizio Canevali
343 messaggi dal 26 agosto 2007
Fabrica ha scritto:
Ciao,

<form id="Form1"

    defaultbutton="SubmitButton"

    defaultfocus="TextBox1"

    runat="server">


Ciao se faccio così però in ogni textbox dove premo invio mi va a richiamare il bottone di defaultbutton. Invece nel form ho due textbox che alla pressione dell'invio devono fare cose diverse. Come posso fare?

Lunga vita e prosperità!!
La gestione della pressione di un tasto è un evento lato client quindi se devi richiamare due funzioni diverse potresti:
- preparare due pulsanti con i relativi gestori degli eventi click che eseguono due funzioni diverse una per un textbox e una per l'altro;
- disattivare il pulsante predefinito con:
<form id="form1" runat="server" defaultbutton="">

- gestire in javascript l'evento di pressione del tasto enter per ciascuna textbox, inattivando il submit predefinito:
<script>
function keyPress(id){
    if (window.event.keyCode==13)
    {
        window.event.keyCode=0;

        if(id == 'b1')
        {
            document.all("b1").click(); 
        }
        else if (id == 'b2')
        {
            document.all("b2").click(); 
        }
    }   
}
</script>

- associare l'evento onkeypress alle TextBox in questo modo:
t1.Attributes.Add("onkeypress", @"keyPress('b1')");

- nascondere la visibilità dei "pulsanti di appoggio" con l'aiuto degli stili:
b1.Attributes.Add("style", @"visibility:hidden;");


ecco l'esempio completo:
protected void Page_Load(object sender, EventArgs e)
{
    t1.Attributes.Add("onkeypress", @"keyPress('b1')");
    t2.Attributes.Add("onkeypress", @"keyPress('b2')");

    b1.Attributes.Add("style", @"visibility:hidden;");
    b2.Attributes.Add("style", @"visibility:hidden;");
}
    <title></title>

<script>
function keyPress(id){
    if (window.event.keyCode==13)
    {
        window.event.keyCode=0;

        if(id == 'b1')
        {
            document.all("b1").click(); 
        }
        else if (id == 'b2')
        {
            document.all("b2").click(); 
        }
    }   
}
</script>

</head>
<body>
    <form id="form1" runat="server" defaultbutton="">
    <div>
        <asp:TextBox ID="t1" runat="server"></asp:TextBox>
        <asp:Button ID="b1" runat="server" Text="b1" onclick="b1_Click" />
        <asp:TextBox ID="t2" runat="server"></asp:TextBox>
        <asp:Button ID="b2" runat="server" Text="b1" OnClick="b2_Click" />
..

Prendilo come spunto, spero ti sia di aiuto.

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it
Non prendetemi per pazzo ma oggi ho trovato una soluzione alternativa a tutto sto' javascript che ho suggerito, e siccome alla luce dei fatti un po' me ne vergogno mi sento in dovere di precisare che è possibile specificare un pulsante predefinito per ciascun blocco di "moduli" racchiudendo i controlli in un Panel specificando la proprietà DefaultButton al corrispondente Button; più o meno così:
<asp:Panel runat=server ID="p1" DefaultButton="Button1">
    <asp:TextBox runat="server" ID="TextBox1" ></asp:TextBox>
    <asp:TextBox runat="server" ID="TextBox2" ></asp:TextBox>
    <asp:Button runat="server" ID="Button1" OnClick="b1_click" />
</asp:Panel>

<asp:Panel runat=server ID="p2" DefaultButton="Button2">
    <asp:TextBox runat="server" ID="TextBox3" ></asp:TextBox>
    <asp:TextBox runat="server" ID="TextBox4" ></asp:TextBox>
    <asp:Button runat="server" ID="Button2" OnClick="b2_click" />
</asp:Panel>


La cosa pazzesca è che c'era anche uno script sull'argomento: http://www.aspitalia.com/script/865/Impostare-Pulsante-Default-Controllo-Panel-ASP.NET-2.0.aspx !!!

Comunque c'è da dire che il Javascript che fa ASP.NET non è molto diverso dalla mia bislacca idea

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.