- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Negare l'inserimento di alcune parole
-
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!!!!
-
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à.
-
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!
-
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!
-
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>
-
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
-
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!
-
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
-
B'è, credo che sia meglio lasciargli vedere il testo asteriscato o modificato, poi quando non c'è niente da correggere, inviare!
-
Ok grazie,
ti faccio sapere quando ho configurato il tutto.
Buona serata
-
Daigor, ho inserito le tue istruzioni nella mia form originale, funziona tutto perfettamente, grazie mille di cuore.
-
Benissimo!!!
Alla prossima!
-
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
-
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