Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Invio webform da enter senza usare asp:Button

    ciao!

    forse sto facendo una domanda stupida, ma non ho trovato risposta.

    ho un progetto webform, e in una pagina ho messo un button così:
    codice:
    <button runat="server" id="btnInviaRichiesta" class="msg_send_btn" type="button"><i class="fas fa-paper-plane" aria-hidden="true"></i></button>
    ho poi messo nel code behind un Handles ed è ok.
    ma avrei la necessità di inviare il form senza cliccare sul button, ma dando invio.
    ho capito che dovrei usare asp:Button, ma se non volessi come potrei fare??

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    in questo (vecchio) esempio, il submit avviene sia al click del bottone che alla pressione del tasto Enter posizionandosi nella TextBox:


    ASPX
    codice:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <script type="text/javascript">
            document.getElementById('nome').onkeydown = function (e) {
                if (e.keyCode == 13) {
                    forms[0].submit();
                }
            };
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                Name:
                <input type="text" name="nome" /><br />
                <input type="submit" />
            </div>
        </form>
    </body>
    </html>

    CODEBEHIND:
    codice:
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["pb"] = 0;
        }
    
    
        Response.Write("num postback: " + ViewState["pb"].ToString());
        ViewState["pb"] = ((int)ViewState["pb"]) + 1;
    }

  3. #3
    ciao!

    la parte js non mi funziona diciamo.
    codice:
    <input type="text" class="write_msg" placeholder="Rispondi" id="testo" runat="server" clientidmode="Static" />
    <button runat="server" id="btnInviaRichiesta" class="msg_send_btn" type="button"><i class="fas fa-paper-plane" aria-hidden="true"></i></button>
    
        <script type="text/javascript">
            document.getElementById('testo').onkeydown = function (e) {
                if (e.keyCode == 13) {
                    forms[0].submit();
                    console.log('ok')
                }
            };
        </script>
    quando vado a dare il tasto invio ottengo questo:
    codice:
    ReferenceError: forms is not defined

  4. #4
    ho modificato il js così e non ho l'errore e vedo l'ok:
    codice:
     <script type="text/javascript">
            document.getElementById('testo').onkeydown = function (e) {
                if (e.keyCode == 13) {
                    var f = document.getElementsByTagName("form");
                    f[0].submit();
                }
            };
        </script>
    però la funzione legata al bottone non viene eseguita.
    che sarebbe questa:
    codice:
      Protected Sub btnInviaRichiesta_Click(sender As Object, e As EventArgs) Handles btnInviaRichiesta.ServerClick
            If Not String.IsNullOrEmpty(testo.Value) Then
                oConn.Open()
                Dim cmd As SqlCommand = New SqlCommand("[usp_InsertRichiestaMsg]", oConn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Clear()
                cmd.Parameters.AddWithValue("@MsgRicId", ricId)
                cmd.Parameters.AddWithValue("@MsgStatus", 0)
                cmd.Parameters.AddWithValue("@MsgDestinatario", dest)
                cmd.Parameters.AddWithValue("@MsgTipoUtente", "R")
                cmd.Parameters.AddWithValue("@MsgTesto", testo.Value)
                cmd.ExecuteNonQuery()
                oConn.Close()
            End If
            Response.Redirect(HttpContext.Current.Request.Url.ToString(), True)
        End Sub

  5. #5
    ho fatto così e sembra funzionare:
    codice:
        Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
            If IsPostBack Then
                inviaRic()
            End If
    
        End Sub
    
    Protected Sub btnInviaRichiesta_Click(sender As Object, e As EventArgs) Handles btnInviaRichiesta.ServerClick
            inviaRic()
        End Sub
    
        Private Sub inviaRic()
            If Not String.IsNullOrEmpty(testo.Value) Then
                oConn.Open()
                Dim cmd As SqlCommand = New SqlCommand("[usp_InsertRichiestaMsg]", oConn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Clear()
                cmd.Parameters.AddWithValue("@MsgRicId", ricId)
                cmd.Parameters.AddWithValue("@MsgStatus", 0)
                cmd.Parameters.AddWithValue("@MsgDestinatario", dest)
                cmd.Parameters.AddWithValue("@MsgTipoUtente", "R")
                cmd.Parameters.AddWithValue("@MsgTesto", testo.Value)
                cmd.ExecuteNonQuery()
                oConn.Close()
            End If
            Response.Redirect(HttpContext.Current.Request.Url.ToString(), True)
        End Sub

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    la tua textbox "testo" è lato server, forse per questo JS non la vede (nonostante ClientIdMode=static)

    di solito poi la form fa parte (in javascript) di un array di forms, e la prima (0) è quella in uso (non ci dovrebbero essere piu' forms nella pagina, quindi non so perche' non te la vede).


    dovresti postare tutto il codice, ma se funziona, ok

  7. #7
    Quote Originariamente inviata da djciko Visualizza il messaggio
    la tua textbox "testo" è lato server, forse per questo JS non la vede (nonostante ClientIdMode=static)

    di solito poi la form fa parte (in javascript) di un array di forms, e la prima (0) è quella in uso (non ci dovrebbero essere piu' forms nella pagina, quindi non so perche' non te la vede).


    dovresti postare tutto il codice, ma se funziona, ok
    ho controllato e di form ce ne è uno solo.
    ma il codice di partenza non è mio, quindi mi devo un pò arrangiare.

    cmq ho fatto diverse prove e così funziona.
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.