• User

    Negare l'inserimento di alcune parole

    Buonasera,
    posso tramite javascript negare l'inserimento di alcune parole, da me precedentemente scelte, in un campo di testo?
    Grazie


  • User Attivo

    Prova così:

    
    asd = "testo";
    if(asd.indexOf("es") != '-1')
    {
        alert('È stata inserita una stringa non valida');
    }
    
    

  • User

    Ciao,
    mi puoi cortesemente spiegare questi comandi?giusto per capire bene..
    Se voglio inserire piu parole da bloccare, le scrivo dove hai messo "testo", separate da una virgola?
    Grazie


  • User Attivo

    Mo te spiego il pezzo di codice...poi lo facciamo evolvere in quel che vuoi...

    
    asd = "testo";
    if(asd.indexOf("es") != '-1')
    {
        alert('È stata inserita una stringa non valida');
    }
    
    

    Variabile contenente il testo in cui cercare

    
    asd = "testo";
    
    ```Controllo se nella variabile "asd", è presente questa stringa "es", è se il risultato è diverso da "-1" allora vuol dire che la parola cercata è presente...
    

    if(asd.indexOf("es") != '-1')
    {
    alert('È stata inserita una stringa non valida');
    }

    Ora facciamogli fare ciò che vuoi...
    
    

    //Creo array che conterrà le parole da censurare e di seguito lo riempio
    var bannazione = new Array();
    bannazione[0] = 'xke';
    bannazione[1] = 'xrò';
    bannazione[2] = 'azz';

    var censurate = "";

    //Inizializzo la funzione che contollerà ciò che gli viene passato
    function controllo_bannazione(testo)
    {
    //Ciclo per ogni elemento del'array, controllando se è presente nella stringa passata
    for(i=0;i<bannazione.length;i++)
    {
    //controllo se è presente ogni elemento
    if(testo.indexOf(bannazione*) != -1)
    {
    censurate += bannazione*+"\r\n";
    }
    }
    if(censurate != "")
    {
    alert("Le seguenti parole non sono ammesse:\r\n\r\n"+censurate);
    }
    }

    
    Così testi se funziona...
    

    controllo_bannazione('Ciao ciccio xke te serve sta azz de funzione???');

    
    Fammi sapere!!!!
    

  • User

    Ciao,
    scusami, non ho capito bene quel "es" che cos'è, lo devo cambiare sostituendolo con qualcos altro?
    Come posso modificare lo script in modo tale che non mi chieda nulla a video, nel senso che non voglio che appaia nulla a video, mi interesserebbe solo che le parole venissero omesse nella registrazione del record...
    grazie mille per la tua disponibilità.
    🙂


  • User Attivo

    L'"es" è semplicemente una stringa, è quella che viene cercata, niente di più...

    Però ora sono io a non capire una cosa...se devi registrare un record, sicuramente lo farai lato server, e quindi potresti semplicemente usare uno script in php, asp o simili, così da non essere baypassabile in nessun modo...

    Comunque...ti dico come fare con lo script, che logicamente va eseguito prima del'invio del form, ma dopo il click per inviarlo...

    
    //Creo  array che conterrà le parole da censurare e di seguito lo riempio
    var bannazione = new Array();
    bannazione[0] = 'xke';
    bannazione[1] = 'xrò';
    bannazione[2] = 'azz';
    
    //Creo  array che conterrà le parole da sostituire di seguito lo riempio
    var sostituzione = new Array();
    sostituzione[0] = 'perchè';
    sostituzione[1] = 'però';
    sostituzione[2] = 'caspita';
    
    
    var sostituisci = true;//Se a true, sostituisce, se a false, cancella
    var censurate = "";
    
    //Inizializzo la funzione che contollerà ciò che gli viene passato
    function controllo_bannazione(testo)
    {
         //Ciclo per ogni elemento del'array, controllando se è presente nella stringa passata
        for(i=0;i<bannazione.length;i++)
        {
             //controllo se è presente ogni elemento
            if(testo.indexOf(bannazione*) != -1)
            {
                      if(sostituisci == true)
                      {
                          if(!(sostituzione*.length > 0))
                          {
                              asterischi = "*";
                              for(u=0;u<bannazione*.length-2;u++)
                              {
                                asterischi += asterischi;
                              }
                        }
                        else
                        {
                            asterischi = sostituzione*;
                        }
                    }
                    else
                    {
                        asterischi = "";
                    }
                  
                      censurate += bannazione*+"\r\n";
                  
                      testo.replace(eval("/"+bannazione*+"/g"),asterischi);
            }
        }
        if(censurate != "")
        {
             //Esegui tutto ciò che ti serve qui dentro...
             //Ad esempio qui fa la lista delle parole trovate e stampa il testo con gli asterischi al posto delle parole...
             //Io manterrei gli asterischi per non rendere incomprensibile il testo
             //Qui sappi che hai 2 variabili in arrivo: testo e censurate, usale con sapienza ;-)
             alert("Le seguenti parole non sono ammesse:\r\n\r\n"+censurate);
             alert(testo);
        }
    }
    
    controllo_bannazione('Ciao ciccio xke te serve sta azz de funzione???');
    
    

    Leggi i commenti nel codice, e vedrai dove posizionare il codice da eseguire, inoltre, ho aggiunto la possibilità di decidere se sostituirlo con una stringa, asterischi o semplicemente cancellare le parole che non vuoi...

    Spero di essere stato chiaro...fammi sapere!


  • User

    Ciao Daigor,
    innanzitutto grazie mille per la tua gentilezza e per i tuoi preziosissimi consigli.
    Mi sono espresso da cani prima, sono perfettamente d'accordo con te riguardo il controllo php, è tra le cose che mi sono annotato di fare, mi sono espresso male, in realtà volevo esattamente ciò che mi hai spiegato tu, un replace.
    Il codice grazie ai tuoi commenti mi è chiaro, ma non capisco come attuarlo alla mia form, non capisco cosa devo inserire nella parte dove tu dici //esegui tutto cio che ti serve qui dentro.
    Supponiamo una form tipo questa:

    
    <form name="moduloGuest" id="moduloGuest" method="post" action="">
    
    <table>
          
        <tr>
             <td><strong> Indica cortesemente il tuo nome </strong></td>
             <td><input type="text" name="nome_utente" id="nome_utente" size="30" maxlength="40" value="" </td>
         </tr>
    
    <tr>
             <td valign="top"><strong>Scrivi la tua opinione</strong></td><td><textarea name="testo_rec" id="testo_rec" cols="70" rows="17" </td>
    </tr>
        
    <tr>
             <td align="center" colspan="2"><input type="submit" value="Invia il messaggio!"></td>
     </tr>
    </table>
    </form>
    
    

    Se non ho capito male succede cosi:
    l'utente scrive nome suo nel campo nome_utente e la sua opinione nel campo testo_rec, quando fa la submit appare una segnalazione a video che dice "Le seguenti parole non sono ammesse:XXX
    A questo punto lo script modifica le parole nel campo testo_rec e quando l'utente da ok alla segnalazione video il record parte e viene scritto tramite php al database?è corretto cosi?e in caso positivo, come posso adattare lo script all'esempio della form che ti ho messo qui sopra?Non riesco a capire come collegare script con le form.
    Scusami ancora dell'insistenza, ma ti assicuro che una volta capita bene bene la cosa non ti disturberò più:)
    grazie e buonanotte!


  • User Attivo

    Così va:

    
    <script>
    //Creo  array che conterrà le parole da censurare e di seguito lo riempio
    var bannazione = new Array();
    bannazione[0] = 'xke';
    bannazione[1] = 'xrò';
    bannazione[2] = 'azz';
    
    var sostituzione = new Array();
    sostituzione[0] = 'perchè';
    sostituzione[1] = 'però';
    sostituzione[2] = 'caspita';
    
    var censurate = "";
    var sostituisci = true;//Se a true, sostituisce, se a false, cancella
    
    //Inizializzo la funzione che contollerà ciò che gli viene passato
    function controllo_bannazione(testo)
    {
        censurate = "";
         //Ciclo per ogni elemento del'array, controllando se è presente nella stringa passata
        for(i=0;i<bannazione.length;i++)
        {
             //controllo se è presente ogni elemento
            if(testo.indexOf(bannazione*) != -1)
            {
                      if(sostituisci == true)
                      {
                          if(sostituzione*.length == 0)
                          {
                              asterischi = "*";
                              for(u=0;u<bannazione*.length-2;u++)
                              {
                                asterischi += asterischi;
                              }
                        }
                        else
                        {
                            asterischi = sostituzione*;
                        }
                    }
                    else
                    {
                        asterischi = "";
                    }
                  
                      censurate += bannazione*+"\r\n";
                  
                      testo = testo.replace(eval("/"+bannazione*+"/g"),asterischi);
            }
        }
        if(censurate != "")
        {
             //Esegui tutto ciò che ti serve qui dentro...
             //Ad esempio qui fa la lista delle parole trovate e stampa il testo con gli asterischi al posto delle parole...
             //Io manterrei gli asterischi per non rendere incomprensibile il testo
             //Qui sappi che hai 2 variabili in arrivo: testo e censurate, usale con sapienza ;-)
             alert("Le seguenti parole non sono ammesse:\r\n\r\n"+censurate);
             document.getElementById('testo_rec').value = testo;
             //alert(testo);
            
        }
        document.getElementById('moduloGuest').submit();
    }
    </script>
    
    <form name="moduloGuest" id="moduloGuest" method="post" action="">
    
    <table>
          
        <tr>
             <td><strong> Indica cortesemente il tuo nome </strong></td>
             <td><input type="text" name="nome_utente" id="nome_utente" size="30" maxlength="40" value=""></td>
         </tr>
    
    <tr>
             <td valign="top"><strong>Scrivi la tua opinione</strong></td><td><textarea name="testo_rec" id="testo_rec" cols="70" rows="17"></textarea></td>
    </tr>
        
    <tr>
             <td align="center" colspan="2"><input type="button" onClick="controllo_bannazione(document.getElementById('testo_rec').value)" value="Invia il messaggio!"></td>
     </tr>
    </table>
    </form>
    
    

  • User

    Ciao Daigor,
    ho fatto una prova, funziona tutto, sei stato gentilissimo.
    Mi puoi dare una tua ulteriore opinione? Ho visto che c'e' anche la funziona reg_exp, ma potrei inserirla all'interno delle tue istruzioni oppure no?serve?
    Grazie mille


  • User Attivo

    B'è, se il tuo problema sono semplici parole, non credo serva a tanto, ma se, ad esempio, vuoi controllare se l'indirizzo email è scritto bene, allora può essere utile!


  • User

    No no, il mio problema sono solo semplici parole, la mia domanda era semplice curiosità, ne ho approfittato solo perchè credo tu sia molto esperto in materia.
    Ho fatto una form come esempio per capire bene le tue istruzioni, e stasera applico le tue istruzioni alla form vera e propria e poi ti faccio sapere se è andato tutto bene.
    Ho notato una cosa, quando segnala che sono state sostituite delle parole, nel momento che do OK parte il submit e l'inserimento dei record va a buon fine. Secondo la tua esperienza, conviene fare cosi, o conviene che quando c'e' la segnalazione a video l'utente da l'OK, vede le parole modificate, magari con gli asterischi, dando la possibilità di cambiare le parole?
    Grazie mille


  • User Attivo

    B'è, credo che sia meglio lasciargli vedere il testo asteriscato o modificato, poi quando non c'è niente da correggere, inviare!


  • User

    Ok grazie,
    ti faccio sapere quando ho configurato il tutto.
    Buona serata


  • User

    Daigor, ho inserito le tue istruzioni nella mia form originale, funziona tutto perfettamente, grazie mille di cuore.
    😉


  • User Attivo

    Benissimo!!!
    Alla prossima! 😉


  • User

    Ciao daigor,
    ho notato un problema. Prima di inserire tutte le tue istruzioni, nella form avevo un'altro controllo in javascript che veniva attivato tramite questa istruzione:

    <form name="moduloGuest" id="moduloGuest" onSubmit="return controllo();" ETC ETC

    infatti funzionava perchè alla fine della form avevo:

    <input type="submit" ETC ETC

    Ora, cambiando quest'ultima istruzione con:

    <input type="button"

    non ho più l'aggancio corretto, come posso fare?
    grazie


  • User

    Daigor in pratica avevo altre istruzioni javascript che mi andavano a fare un controllo sui vari campi per vedere se erano compilati, ti riporto un esempio:

    <script language="JavaScript">
    function controllo(){
    with(document.moduloGuest) {
    if(nome_utente.value=="") {
    alert("Inserisci cortesemente il tuo nome.");
    nome_utente.className="bred";
    nome_utente.focus();
    return false;
    }
    }
    return true;
    }
    </script>

    Dove in class bred nel file CSS c'e':
    .bred{
    background-color:#FF0000;
    }

    Come posso fare per far convivere tutte e due le istruzioni di javascript?
    Grazie