Chiamare un metodo alla pressione del tasto invio
voyager18
voyager18 non è online. Ultima attività: 02/07/2009 13.18.37voyager18
il 5 agosto 2008 alle 16.34
205 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à!!
RE: Chiamare un metodo alla pressione del tasto invio
fabrica
fabrica non è online. Ultima attività: 05/07/2009 17.14.46fabrica Top Poster
il 5 agosto 2008 alle 16.44
www.fabricasoft.net | 1.488 messaggi dal 03 dicembre 2001
Ciao,

<form id="Form1"

    defaultbutton="SubmitButton"

    defaultfocus="TextBox1"

    runat="server">


Fabrizio Canevali

on "gli svizzeri sono indietro" ...
RE: Chiamare un metodo alla pressione del tasto invio
voyager18
voyager18 non è online. Ultima attività: 02/07/2009 13.18.37voyager18
il 9 agosto 2008 alle 11.13
205 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à!!
Microsoft Most Valuable Professional
RE: Chiamare un metodo alla pressione del tasto invio
novecento
novecento non è online. Ultima attività: 05/07/2009 22.39.33novecento Top Poster
il 9 agosto 2008 alle 12.41
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
Microsoft Most Valuable Professional
RE: Chiamare un metodo alla pressione del tasto invio
novecento
novecento non è online. Ultima attività: 05/07/2009 22.39.33novecento Top Poster
il 12 settembre 2008 alle 16.40
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

Vai a:
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.

COMMUNITY
ULTIMI MESSAGGI
MEDIA
IN EVIDENZA
MISC
Powered by .db Forums "Caesar Reborn" v. 2009.6.9