Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59

    riuscire a captare un pulsante di tipo "button"

    Salve non riesco a capire perchè non riesco a captare la pressione di un pulsante di un form di tipo "button" faccio l'esempio

    <form method='POST' name="modulo">
    Nome e Cognome
    <input name='NomeCognome' type='text' size="30" ></td>
    <input type="button" name="invia" value="Invia" onClick="Modulo()">

    praticamente la funzione JS che si chiama modulo non fà altro che controllare se il campo nomecognome sia stato inserito o meno, dopodichè cambia la action del form facendola ricadere sullo stesso file php dove c'è il form, in basso al form ho il controllo seguente:
    <?
    if(isset($_POST['invia']))
    {
    echo "tasto invia premuto";
    }

    ?>

    ecco quello che non capisco è perchè se il pulsante "invia" è di tipo "submit" php riesce a verificare l'isset, mentre se è di tipo button la cosa non funziona? cosa cambia tra i due tipi, come posso captare se è stato premuto o meno?

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Prova cosi' :

    Codice PHP:

    <form method='POST' action="" name="modulo">
    Nome e Cognome
    <input name='NomeCognome' type='text' size="30" ></td>
    <
    button name="invia" onClick="this.form.submit()">VAI</button>
    </
    form

    I button non sono rpettamente dei tipi di input, si funzionano lo stesso ... ma e'0 meglio falri come "<button>LABEL</button>" .... almeno per quello che ricordo li uso davvero poco spesso.

    CMq il prob e' nell'html non nel php ....

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    non funziona lo stesso, tra l'altro io ho la funzione javascript che si chiama Modulo() che serve per controllare se un campo è vuoto o meno, che è così svolta:

    Codice PHP:

    <script language="javascript">
    <!--
    function 
    Modulo() 
    {
        var 
    nomecognome document.modulo.NomeCognome.value;
        
    document.modulo.NomeCognome.style.backgroundColor="";

        if ((
    nomecognome == "") || (nomecognome == "undefined")) 
        {
            
    alert("Il campo Nome e Cognome e obbligatorio.");
            
    document.modulo.NomeCognome.focus();
            
    document.modulo.NomeCognome.style.backgroundColor="red";
            return 
    false;
        }
        else 
        {
            
    document.modulo.action "prova.php ";
            
    document.modulo.submit();
        }
    }
    //-->
    </script> 
    quindi come ben vedi alla fine c'è il submit quindi dovrei poter riuscire a captare con $_POST il valore del pulsante, mentre invece rimane sempre "undefined",
    qualcuno che sà come posso risolvere?

  4. #4
    Ciao,

    il problema è di HTML o Javascript, non di php a cui il browser può non inviare nulla se le operazioni non sono svolte nel modo corretto.

    Ti sposto nella sezione javascript dato che sembra aver preso questa piega la discussione
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Tutti i pulsanti di un form, se questo viene inviato invocando il metodo submit(), non inviano il loro valore al server.

    Questo e' vero anche per i pulsanti submit e image, tant'e' che si testa il loro valore per verificare se siano stati cliccati...

    Se ti serve inviare un valore alla pressione del tasto button, crea un campo hidden e valorizzalo al click sul button.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    a condizioni normali, nell'invio del form trovi soltanto:
    input type=submit
    button type=submit

    mentre non fanno nemmeno partire il post del form i controlli tipo:
    input type=button
    button type=button

    diversamente, se a questi controlli associ una funzione sul click, e questa funzione continene un'istruzione del tipo:
    Codice PHP:
    document.forms[0].submit(); 
    le cose cambiano


    per i controlli del primo tipo dovresti mettere un return false, altrimenti l'invio della pagina avviene 2 volte:
    Codice PHP:
    onclick="miaSub(); return false;" 
    per i controlli del secondo tipo non fa diferenza.

    per entrambi i tipi di controlli comunque, i rispettivi valori non vengono inviati.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Scusate siccome ho le idee molto confuse dagli ultimi post, insomma come dovrei fare? tenendo presente che se uso submit come tipo di pulsante, il javascript non mi mantiene lo stato dell'evidenziazione in rosso ma và via subito ed è come se refreshasse la pagina subito dopo aver testato che i campi sono vuoti,
    mi potreste scrivere il codice corretto del pulsante?

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ribadisco: il value di un pulsante di tipo button non viene inviato e nulla puoi fare perche' lo sia.

    Puoi inviare pero' un opportuno campo nascosto... queste le modifiche:

    codice:
    <script language="javascript"> 
    <!-- 
    function Modulo() 
    { 
        var nomecognome = document.modulo.NomeCognome.value; 
        document.modulo.NomeCognome.style.backgroundColor=""; 
    
        if ((nomecognome == "") || (nomecognome == "undefined")) 
        { 
            alert("Il campo Nome e Cognome e obbligatorio."); 
            document.modulo.NomeCognome.focus(); 
            document.modulo.NomeCognome.style.backgroundColor="red"; 
            return false; 
        } 
        else 
        { 
            document.modulo.action = "prova.php "; 
            document.modulo.invia.value = "Invia";
            document.modulo.submit(); 
        } 
    } 
    //--> 
    </script>
    
    .....
    <input type="button" name="PIPPO" value="Invia" onClick="Modulo()">
    <input type="hidden" name="invia" value="">
    Non te lo spiego per non confonderti le idee

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    io userei un normale input submit in modo che isset di php rilevi il valore.

    su onclick di questo input va bene la funzione che hai già: se trova errori retituisce false (quindi impedisce l'invio), altrimenti parte l'invio normalmente:

    Codice PHP:
    <form method='POST' action="" name="modulo"
         
    Nome e Cognome 
        
    <input name='NomeCognome' type='text' size="30" >
     
        <
    input type="submit" name="invia" onClick="return Modulo();">VAI</button
    </
    form

    Codice PHP:
    function Modulo() 

        var 
    nomecognome document.modulo.NomeCognome.value
        
    document.modulo.NomeCognome.style.backgroundColor=""

        if ((
    nomecognome == "") || (nomecognome == "undefined")) 
        { 
            
    alert("Il campo Nome e Cognome e obbligatorio."); 
            
    document.modulo.NomeCognome.focus(); 
            
    document.modulo.NomeCognome.style.backgroundColor="red"
            return 
    false
        } 
        else 
        { 
            
    document.modulo.action "prova.php "
            return 
    true;
        } 


  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Gluck74
    io userei un normale input submit in modo che isset di php rilevi il valore.

    su onclick di questo input va bene la funzione che hai già: se trova errori retituisce false (quindi impedisce l'invio), altrimenti parte l'invio normalmente:

    Codice PHP:
    <form method='POST' action="" name="modulo"
         
    Nome e Cognome 
        
    <input name='NomeCognome' type='text' size="30" >
     
        <
    input type="submit" name="invia" onClick="return Modulo();">VAI</button
    </
    form

    Codice PHP:
    function Modulo() 

        var 
    nomecognome document.modulo.NomeCognome.value
        
    document.modulo.NomeCognome.style.backgroundColor=""

        if ((
    nomecognome == "") || (nomecognome == "undefined")) 
        { 
            
    alert("Il campo Nome e Cognome e obbligatorio."); 
            
    document.modulo.NomeCognome.focus(); 
            
    document.modulo.NomeCognome.style.backgroundColor="red"
            return 
    false
        } 
        else 
        { 
            
    document.modulo.action "prova.php "
            return 
    true;
        } 

    Provali i tuoi consigli prima di proporli
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

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 © 2025 vBulletin Solutions, Inc. All rights reserved.