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

    impedire il reset di una textarea

    Salve a tutti,
    in pratica ho una pagina PHP con un form per l'invio di messaggi privati, con 3 campi di input (4 col bottone): destinatario; oggetto; testo del messaggio.
    Destinatario e Oggetto sono dei semplici input text mentre il testo del messaggio è una textarea che utilizzo con il plugin NicEdit.js

    Alla pressione del tasto Invia faccio i controlli di routine e nel caso in cui la procedura non vada a buon fine, stampo il messaggio di errore ma si cancella tutto quello che avevo scritto nel corpo del messaggio.

    Ad esempio scrivo tutto il messaggio ma mi dimentico di scrivere il destinatario, allora premo Invia e il sistema mi dirà che non posso lasciare il campo destinatario vuoto, ma pensate se intanto avevo scritto 100 righe di messaggio e queste vanno perse!

    Come devo fare per risolvere il problema? Ovviamente l'action è vuoto perché lo script funziona sulla pagina stessa.

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Quote Originariamente inviata da frenkytribe Visualizza il messaggio
    Ovviamente l'action è vuoto perché lo script funziona sulla pagina stessa.
    due sono le cose: o il form viene esplicitamente resettato o stai ricaricando la pagina

    se il form ha un submit vero e proprio devi bloccarlo, validare ed eventualmente inviare
    non sapendo con precisione la procedura che esegui posso solo consigliarti di debuggare con alert e controllare (ancor meglio registrando, perche' appunto la pagina potrebbe venir ricaricata) la console del browser
    ciao

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dovrai impostare il submit con un return false in modo che il form non venga eseguito e solo a controlli eseguiti forzerai l'invio del forum.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Sì, il form ha un submit vero e proprio con un nome specifico che gli ho assegnato ed un valore.
    Scrivo un pezzo di codice di PHP molto facile da capire.
    Codice PHP:
    <?
    if($_POST[sendpm]=="Invia il messaggio"){                            $check_name_exist="SELECT username FROM utente WHERE username='$_POST[pm_to]'";                            $exe_check=mysql_query($check_name_exist);                            if(strlen($pm_to)<1){                            ?>                            <script type="text/javascript">                            alert("Non puoi lasciare il campo destinatario vuoto, riprova.");                            </script>                            <?                            }                        }
    ?>
    <form method="POST">                            Destinatario: <input class="pm_" type="text" name="pm_to" size="15">&nbsp;&nbsp;Oggetto: <input size="30" class="pm_" type="text" name="pm_subj" >                            <br /><br />                            <textarea style="height: 200px; width: 800px; text-align: left;" id="area1" name="area1"></textarea>                                                        <br>                            <input type="submit" value="Invia il messaggio" name="sendpm">                        </form>
    In pratica per il momento c'è un solo controllo, ovvero che se il campo destinatario è vuoto mi appare l'alert. Tutto questo funziona ma quando chiudo l'alert mi si svuota la textarea

  5. #5
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Dovrai impostare il submit con un return false in modo che il form non venga eseguito e solo a controlli eseguiti forzerai l'invio del forum.
    Potresti gentilmente farmi un esempio pratico?

  6. #6
    Da quel che ho capito, non fai per niente un controllo tramite JavaScript ma solo lato server, quindi al click sul tasto di invio la pagina viene effettivamente inviata, solo allora fai i controlli e brutalmente stampi un alert. Scelta sicuramente pessima.
    Quello che ti consigliano gli altri è di effettuare i controlli lato client attraverso JavaScript al click sul tasto di invio, e se c'è qualcosa che non va avverti l'utente (con alert o anche stampando sulla pagina in un'apposita sezione di errori) bloccando l'invio del form, invece se tutto va a buon fine permetti il normale invio del form.
    Lato server devi eseguire nuovamente i controlli perché JavaScript potrebbe essere disattivato, ed eventualmente stampare a video i messaggi di errore.
    E' normale che si perda tutto il contenuto del form perché per come l'hai implementato non dici da nessuna parte al form di riempirsi con i valori appena inviati, che nel caso della textarea può essere qualcosa di questo tipo:

    Codice PHP:
    <textarea style="height: 200px; width: 800px; text-align: left;" id="area1" name="area1"><?php echo $_POST['area1']; ?></textarea>
    Ti conviene studiare un po' come funziona quanto da me e dagli altri spiegato, senza cercare in giro pezzi di codice già pronti che poi finisci per non capire a fondo.

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Però io un controllo anche lato server lo farei.
    Se l'utente disabilita JS ci potrebbero essere seri problemi.

  8. #8
    Ringrazio tutti per i consigli, alla fine la soluzione stava nel PHP, il JS non c'entrava niente.

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.