Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema con textarea

  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    Problema con textarea

    Ciao a tutti ho questo codice:
    codice:
    function controllo(f) {
     var nome=f.nome;
     var email=f.email;
     var richieste=f.richieste;
     if (nome.value=="") {
      alert("Nome è obbligatorio");
      return false;
     }
     if (email.value=="") {
      alert("e-mail deve contenere un indirizzo e-mail.");
      return false;
     }
     if (!verEmail(email.value)) {
      alert("Inserire un indirizzo e-mail corretto.");
      return false;
     }
     if (richieste.value=="") {
      alert("Richieste è obbligatorio");
      return false;
     }
     return true;
    }
    richiamato nel form da onsubmit:
    codice:
    onSubmit="return controllo(this);"
    il campo richieste e' una textarea ... tutto funziona bene se non scrivono nulla ... ma se si danno degli invii o si fanno solo degli spazi, quindi la textarea alla fin fine è vuota, il controllo risulta true

    come si può risolvere questo problema .. ovvero verificare che non sia solo piena di spazi o invii ... e quindi priva di testo?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function controlla(textarea) {
     var f = richieste.value;
     //------ Rimpiazzare gli spazi
     f = f.replace(/\s*/gi,'');
     //------ Rimpiazzare gli a capo
     f = f.replace(/\x13\x10*/gi,''); 
     if (f != '') {
      alert(f);
     }
    }
    //-->
    </script>
    
    </head>
    <body>
    <textarea id="richieste" name="richieste" cols="50" rows="20"></textarea>
    
    <input type="button" value="Clicca" onclick="controlla(richieste)"/>
    
    </body>
    </html>

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    scusa ma .. integrandolo col codice che ho postato io .. come si fa x mantenere solo onsubmit=controllo(this);"

  4. #4
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    comunque a logica il controllo che dovrebbe fare è questo:

    campo vuoto
    se la lunghezza del campo è 0 allora alert

    campo con soli spazi
    se la lunghezza del campo - il numero di spazi è 0 allora alert

    campo con soli a capo
    se la lunghezza del campo - il numero di a capo è 0 allora alert

    campo con spazi e a capo (niente testo)
    se la lunghezza del campo - il numero di a capo - il numero di spazi è 0 allora alert

    oppure ancora più diretto:
    se la lunghezza del campo è uguale alla lunghezza del campo con spazi e/o a capo rimossi allora alert

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Beh, il codice che ho postato deve essere modificato per rispondere ai tuoi bisogni. Comunque, la modifica non è difficile. Basta creare una nuova funzione che ritorni true o false.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function controlla(textarea) {
     var f = textarea.value;
     //------ Rimpiazzare gli spazi
     f = f.replace(/\s*/gi,'');
     //------ Rimpiazzare gli a capo
     f = f.replace(/\x13\x10*/gi,''); 
     if (f != '') {
      return true;
     }
     return false;
    }
    
    function controllaForm() {
     //---- 
     if (! controlla(richieste)) {
      alert("Campo vuoto");
     }
    }
    
    //-->
    </script>
    
    </head>
    <body>
    <textarea id="richieste" name="richieste" cols="50" rows="20"></textarea>
    
    <input type="button" value="Clicca" onclick="controllaForm()"/>
    
    </body>
    </html>

  6. #6
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    si .. ho capito ... non ci capisco praticamente nulla di js ma l'avevo provato già a mettere (correttamente) il true/false

    piu' che altro anzichè averla come funzione distinta, con integrare intendevo metterla dentro a quella che già ho ... ho fatto un po' di prove ma nada
    Che poi tra l'altro mi valida la form onsubmit ... altrimenti se l'utente e' in un capo e batte invio il form parte essendoci la validazione sul pulsante

    --- EDIT ---
    Finalmente ho risolto ... tnx a lot!
    ecco la soluzione:
    codice:
    <script language="JavaScript">
    
    function verEmail(stringa) {
       if (stringa.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
       return true;
       else return false;
    }
    
    function controllo(f) {
     var nome=f.nome;
     var email=f.email;
     var richieste=f.richieste;
     if (nome.value=="") {
      alert("Nome è obbligatorio");
      return false;
     }
     if (email.value=="") {
      alert("e-mail deve contenere un indirizzo e-mail.");
      return false;
     }
     if (!verEmail(email.value)) {
      alert("Inserire un indirizzo e-mail corretto.");
      return false;
     }
     if (richieste.value=="") {
      alert("Richieste è obbligatorio.");
      return false;
     }
     if (richieste.value.replace(/\s*/gi,'') == '') {
      alert("Richieste è obbligatorio.");
      return false;
     }
     if (richieste.value.replace(/\x13\x10*/gi,'') == '') {
      alert("Richieste è obbligatorio.");
      return false;
     }
     return true;
    }
    
    </script>

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.