Richiamare array in più campi

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Dovrei fare in modo che ogni campo con il proprio richiamo-id, stampi l'alert...ho fatto dei tentativi ma :boxing:

PHP:
function caratteriNo() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) { 
i=nomeCampi[j];
var error = false;
if (fx[i].value.indexOf("<")  != -1) {
error = true;
}
if (fx[i].value.indexOf(">")  != -1) {
error = true;
}
if (fx[i].value.indexOf("\\\\")  != -1) {
error = true;
}
if (error) {
fx[i].style.backgroundColor = 'red'
document.getElementById('caratterix').innerHTML = "I caratteri < > \\\\  non sono ammessi";
fx[i].focus();
return false;
} 
else {
document.getElementById('caratterix').innerHTML = "";
}
 }
return true;
}
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

visto che in altro post dichiari di aver risolto con alert("messaggio")

sai come scorrere gli indici dell'array e in quale variabile gli hai inseriti.

Per logica devi mettere la variabile che controlla in quale campo si verifica l'evento del tuo ciclo for che scorre gli indici dell'array.

qui, document.getElementById(QUI).innerHTML = "I caratteri < > \\\\ non sono ammessi";

e

qui, document.getElementById(QUI).innerHTML = "";

non puoi referenziare un id con un nome univoco per id diversi, ma referenziarli in base al name dei campi del form che sono qui:

Codice:
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ciao,

visto che in altro post dichiari di aver risolto con alert("messaggio")

sai come scorrere gli indici dell'array e in quale variabile gli hai inseriti.

Per logica devi mettere la variabile che controlla in quale campo si verifica l'evento del tuo ciclo for che scorre gli indici dell'array.

qui, document.getElementById(QUI).innerHTML = "I caratteri < > \\\\ non sono ammessi";

e

qui, document.getElementById(QUI).innerHTML = "";

non puoi referenziare un id con un nome univoco per id diversi, ma referenziarli in base al name dei campi del form che sono qui:

Codice:
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];

Valeria.

Si, cosi funziona e lo sapevo, ma il punto è che escono sempre 2 alert invece di quello interessato

PHP:
...
document.getElementById('caratterix').innerHTML = "I caratteri < > \\\\  non sono ammessi";
document.getElementById('caratterix1').innerHTML = "I caratteri < > \\\\  non sono ammessi";
fx[i].focus();
return false;
} 
else {
document.getElementById('caratterix').innerHTML = "";
document.getElementById('caratterix1').innerHTML = "";
}
 }
 return true;
}


Campo1: <span id="caratterix"></span>

Campo2: <span id="caratterix1"></span>
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Non mi sembra di aver detto questo,

basta un solo document.getElementById()

ma deve essere referenziato in base alla variabile associata agli indici degli Array,

lo hai fatto te il ciclo per scorrere gli indici degli array, metti la variabile che scorre quel ciclo.

Ti metto in'aggiunta i tag <span> devono avere come id il name del form.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Non mi sembra di aver detto questo,

basta un solo document.getElementById()

ma deve essere referenziato in base alla variabile associata agli indici degli Array,

lo hai fatto te il ciclo per scorrere gli indici degli array, metti la variabile che scorre quel ciclo.

Ti metto in'aggiunta i tag <span> devono avere come id il name del form.

Valeria.
Scusa non riesco a capire questo punto

basta un solo document.getElementById()

mi dici di metterne uno, e gli altri campi?
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Scusa non riesco a capire questo punto

basta un solo document.getElementById()

mi dici di metterne uno, e gli altri campi?


Gli altri campi gli scorri con la variabile degli indici degli array

questo lo hai fatto te

var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) {
i=nomeCampi[j];

quel'è la variabile che controlla gli indici degli array (che sono i name dei campi del form)?

Visto che scorri tutti i name del form basta un solo document.getElementById() dove tra le parentesi metti la variabile associata a nomeCampi

Ricorda di dare ad ogni tag <span> che ti serve per visualizzare il messaggio come id il nome del campo stesso.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Gli altri campi gli scorri con la variabile degli indici degli array

questo lo hai fatto te

var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) {
i=nomeCampi[j];

quel'è la variabile che controlla gli indici degli array (che sono i name dei campi del form)?

Visto che scorri tutti i name del form basta un solo document.getElementById() dove tra le parentesi metti la variabile associata a nomeCampi

Ricorda di dare ad ogni tag <span> che ti serve per visualizzare il messaggio come id il nome del campo stesso.

Valeria.

MMM..nel mio caso gli <input type="text" name="nome"...> ecc non c'entrano, io il richiamo <span id="caratterix"></span> intendo metterlo in punti diversi
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Si,

ho capito

Codice:
<script type="text/javascript">
function caratteriNo() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) { 
i=nomeCampi[j];
var error = false;
if (fx[i].value.indexOf("<")  != -1) {
error = true;
}
if (fx[i].value.indexOf(">")  != -1) {
error = true;
}
if (fx[i].value.indexOf("\\\\")  != -1) {
error = true;
}
if (error) {
fx[i].style.backgroundColor = 'red'
document.getElementById(''+[i]).innerHTML = "I caratteri < > \\\\  non sono ammessi";
fx[i].focus();
return false;
} 
else {
document.getElementById(''+[i]).innerHTML = "";
}
}
return true;
}
</script>
</head>

<body> 
        
<form method="post" name="mioform1" action="ins.php" onsubmit="return(caratteriNo())">
NOME * <input  type="text" name="nome" onkeyup="caratteriNo()" /><span id="nome"></span>
<br />
CITTA *<input type="text" name="citta" onkeyup="caratteriNo()" /><span id="citta"></span>
<br />
SUOEMAIL *<input type="text" name="suoemail" onkeyup="caratteriNo()" /><span id="suoemail"></span>
<br />
MESSAGGIO *<input type="text" name="messaggio" onkeyup="caratteriNo()" /><span id="messaggio"></span>
<br />
VALIDATOR *<input type="text" name="validator" onkeyup="caratteriNo()" /><span id="validator"></span>
<br />
<button type="submit" name="send" id="submit">Invia</button>   
</form>

Provalo in una pagina che contiene solo questo esempio, no nell'insieme di funzioni dello script che usi.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ok, lui funziona però ho 2 codici simili che entrano in conflitto, ti spiego: se lascio solo il tuo funziona, se in questo codice sotto applico lo stesso metodo di richiamo, questo non va

PHP:
function parolaNo(){ 
var modulo = document.forms.mioform1;
var parole = /\b(<?php echo $paroleProibite; ?>)\b/i; 
var nomiCampi = ["nome","citta","messaggio"];
for (idCampo = 0; idCampo < nomiCampi.length; idCampo++) {
var campo = modulo.elements[nomiCampi[idCampo]];
if (parole.test(campo.value)) {
campo.style.backgroundColor = "red"
document.getElementById('nomiCampi').innerHTML = "La parola \"" + campo.value.match(parole)[0] + "\" non è ammessa";
campo.focus();
return false;
}
else {
document.getElementById('nomiCampi').innerHTML = "";
} 
 }
return true; 
}

richiamo; <span id="nome"></span>
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ok, lui funziona però ho 2 codici simili che entrano in conflitto, ti spiego: se lascio solo il tuo funziona, se in questo codice sotto applico lo stesso metodo di richiamo, questo non va

PHP:
function parolaNo(){ 
var modulo = document.forms.mioform1;
var parole = /\b(<?php echo $paroleProibite; ?>)\b/i; 
var nomiCampi = ["nome","citta","messaggio"];
for (idCampo = 0; idCampo < nomiCampi.length; idCampo++) {
var campo = modulo.elements[nomiCampi[idCampo]];
if (parole.test(campo.value)) {
campo.style.backgroundColor = "red"
document.getElementById('nomiCampi').innerHTML = "La parola \"" + campo.value.match(parole)[0] + "\" non è ammessa";
campo.focus();
return false;
}
else {
document.getElementById('nomiCampi').innerHTML = "";
} 
 }
return true; 
}

richiamo; <span id="nome"></span>

Ciao,

io non so che dire, dovresti rivedere quello che hai scritto, hai dato un nome a un campo di un id nomiCampi e pretendi di visualizzare il messaggio in un id chiamato nome?.

Anche qui hai la stessa situazione usa un solo nome per un id, hai un'array con gli indici dei name dei campi del form usalo, mi spiace ma stai scrivendo a caso, e questo non ti aiuta a imparare e/o a capire dove sbagli.

Nell'esempio che hai postato per scorrere gli indici degli array nel document.getElementById() devi mettere la variabile del ciclo for per i name dei campi del form.

Codice:
document.getElementById(''+nomiCampi[idCampo]).innerHTML ="";

Dato che ogni funzione viene richiamata quando si verifica una determinata condizione if(condizione è vera) esegue la if , se è falsa viene ignorata e si passa al controllo successivo.

Questo è un'esempio con le due funzioni: caratteriNo() e function parolaNo() inserite in un solo script con gli sessi campi e id:

Codice:
<script type="text/javascript">
function caratteriNo() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) { 
i=nomeCampi[j];
var error = false;
if (fx[i].value.indexOf("<")  != -1) {
error = true;
}
if (fx[i].value.indexOf(">")  != -1) {
error = true;
}
if (fx[i].value.indexOf("\\\\")  != -1) {
error = true;
}
if (error) {
fx[i].style.backgroundColor = 'red'
document.getElementById(''+[i]).innerHTML = "I caratteri < > \\\\  non sono ammessi";
fx[i].focus();
return false;
} 
else {
document.getElementById(''+[i]).innerHTML = "";
}
}
return true;
}

function parolaNo(){ 
var modulo = document.forms.mioform1;
var parole = /\b(casa|cane|gatto|topo)\b/i;
var nomiCampi = ["nome","citta","suoemail","messaggio","validator"];
for (idCampo = 0; idCampo < nomiCampi.length; idCampo++) {
var campo = modulo.elements[nomiCampi[idCampo]];
if (parole.test(campo.value)) {
campo.style.backgroundColor = "red"
document.getElementById(''+nomiCampi[idCampo]).innerHTML = "La parola \"" + campo.value.match(parole)[0] + "\" non è ammessa";
campo.focus();
return false;
}
else {
document.getElementById(''+nomiCampi[idCampo]).innerHTML = "";
} 
}
return true; 
}
</script>
</head>

<body> 
        
<form method="post" name="mioform1" action="ins.php" onsubmit="return(caratteriNo() && parolaNo())">
NOME * <input  type="text" name="nome" onkeyup="caratteriNo()" /><span id="nome"></span>
<br />
CITTA *<input type="text" name="citta" onkeyup="caratteriNo()" /><span id="citta"></span>
<br />
SUOEMAIL *<input type="text" name="suoemail" onkeyup="caratteriNo()" /><span id="suoemail"></span>
<br />
MESSAGGIO *<input type="text" name="messaggio" onkeyup="caratteriNo()" /><span id="messaggio"></span>
<br />
VALIDATOR *<input type="text" name="validator" onkeyup="caratteriNo()" /><span id="validator"></span>
<br />
<button type="submit" name="send" id="submit">Invia</button>   
</form>

E' buona regola scrivere codice pulito e funzionale.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ciao,

io non so che dire, dovresti rivedere quello che hai scritto, hai dato un nome a un campo di un id nomiCampi e pretendi di visualizzare il messaggio in un id chiamato nome?.

Anche qui hai la stessa situazione usa un solo nome per un id, hai un'array con gli indici dei name dei campi del form usalo, mi spiace ma stai scrivendo a caso, e questo non ti aiuta a imparare e/o a capire dove sbagli.

Nell'esempio che hai postato per scorrere gli indici degli array nel document.getElementById() devi mettere la variabile del ciclo for per i name dei campi del form.

Codice:
document.getElementById(''+nomiCampi[idCampo]).innerHTML ="";

Dato che ogni funzione viene richiamata quando si verifica una determinata condizione if(condizione è vera) esegue la if , se è falsa viene ignorata e si passa al controllo successivo.

Questo è un'esempio con le due funzioni: caratteriNo() e function parolaNo() inserite in un solo script con gli sessi campi e id:

Codice:
<script type="text/javascript">
function caratteriNo() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (j=0;j<nomeCampi.length;j++) { 
i=nomeCampi[j];
var error = false;
if (fx[i].value.indexOf("<")  != -1) {
error = true;
}
if (fx[i].value.indexOf(">")  != -1) {
error = true;
}
if (fx[i].value.indexOf("\\\\")  != -1) {
error = true;
}
if (error) {
fx[i].style.backgroundColor = 'red'
document.getElementById(''+[i]).innerHTML = "I caratteri < > \\\\  non sono ammessi";
fx[i].focus();
return false;
} 
else {
document.getElementById(''+[i]).innerHTML = "";
}
}
return true;
}

function parolaNo(){ 
var modulo = document.forms.mioform1;
var parole = /\b(casa|cane|gatto|topo)\b/i;
var nomiCampi = ["nome","citta","suoemail","messaggio","validator"];
for (idCampo = 0; idCampo < nomiCampi.length; idCampo++) {
var campo = modulo.elements[nomiCampi[idCampo]];
if (parole.test(campo.value)) {
campo.style.backgroundColor = "red"
document.getElementById(''+nomiCampi[idCampo]).innerHTML = "La parola \"" + campo.value.match(parole)[0] + "\" non è ammessa";
campo.focus();
return false;
}
else {
document.getElementById(''+nomiCampi[idCampo]).innerHTML = "";
} 
}
return true; 
}
</script>
</head>

<body> 
        
<form method="post" name="mioform1" action="ins.php" onsubmit="return(caratteriNo() && parolaNo())">
NOME * <input  type="text" name="nome" onkeyup="caratteriNo()" /><span id="nome"></span>
<br />
CITTA *<input type="text" name="citta" onkeyup="caratteriNo()" /><span id="citta"></span>
<br />
SUOEMAIL *<input type="text" name="suoemail" onkeyup="caratteriNo()" /><span id="suoemail"></span>
<br />
MESSAGGIO *<input type="text" name="messaggio" onkeyup="caratteriNo()" /><span id="messaggio"></span>
<br />
VALIDATOR *<input type="text" name="validator" onkeyup="caratteriNo()" /><span id="validator"></span>
<br />
<button type="submit" name="send" id="submit">Invia</button>   
</form>

E' buona regola scrivere codice pulito e funzionale.

Valeria.

Per te è semplice, ma io...tutte queste regole.

ho notato che nell onkeyup non hai messo questo, è così o l'hai dimenticato?

parolaNo()
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

non credevo volessi controllarlo anche con keyup

se vuoi usarlo anche con keyup, aggiungilo al gestore di eventi onkeyup

onkeyup="caratteriNo();parolaNo()"

in tutti i campi.

Valeria
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ciao,

non credevo volessi controllarlo anche con keyup

se vuoi usarlo anche con keyup, aggiungilo al gestore di eventi onkeyup

onkeyup="caratteriNo();parolaNo()"

in tutti i campi.

Valeria

Si l'ho messo, ho notato una cosa: che se digito il carattere proibito esce subito a video l'alert, e così va bene; mentre con la parola proibita l'alert esce quando clicco su Invia
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Deve uscire subito

Codice:
<form method="post" name="mioform1" action="ins.php" onsubmit="return(caratteriNo() && parolaNo())">
NOME * <input  type="text" name="nome" onkeyup="caratteriNo();parolaNo()" /><span id="nome"></span>
<br />
CITTA *<input type="text" name="citta" onkeyup="caratteriNo();parolaNo()" /><span id="citta"></span>
<br />
SUOEMAIL *<input type="text" name="suoemail" onkeyup="caratteriNo();parolaNo()" /><span id="suoemail"></span>
<br />
MESSAGGIO *<input type="text" name="messaggio" onkeyup="caratteriNo();parolaNo()" /><span id="messaggio"></span>
<br />
VALIDATOR *<input type="text" name="validator" onkeyup="caratteriNo();parolaNo()" /><span id="validator"></span>
<br />
<button type="submit" name="send" id="submit">Invia</button>   
</form>

il ; è il separatore per richiamare più funzioni con un solo gestore di eventi, puoi separarli con la , o con l'operatore di confronto && && è un AND controlla che tutte e due le richieste siano valide || OR una delle due deve essere valida.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Deve uscire subito

Codice:
<form method="post" name="mioform1" action="ins.php" onsubmit="return(caratteriNo() && parolaNo())">
NOME * <input  type="text" name="nome" onkeyup="caratteriNo();parolaNo()" /><span id="nome"></span>
<br />
CITTA *<input type="text" name="citta" onkeyup="caratteriNo();parolaNo()" /><span id="citta"></span>
<br />
SUOEMAIL *<input type="text" name="suoemail" onkeyup="caratteriNo();parolaNo()" /><span id="suoemail"></span>
<br />
MESSAGGIO *<input type="text" name="messaggio" onkeyup="caratteriNo();parolaNo()" /><span id="messaggio"></span>
<br />
VALIDATOR *<input type="text" name="validator" onkeyup="caratteriNo();parolaNo()" /><span id="validator"></span>
<br />
<button type="submit" name="send" id="submit">Invia</button>   
</form>

il ; è il separatore per richiamare più funzioni con un solo gestore di eventi, puoi separarli con la , o con l'operatore di confronto && && è un AND controlla che tutte e due le richieste siano valide || OR una delle due deve essere valida.

Valeria.
Si avevo già messo il punto e virgola, anche il tuo codice fa quel difetto con in caratteri proibiti (esce l'alert quando si clicca Invia)
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
A me esce subito il messaggio di avviso,

prova a sostituire ; con &&


Valeria.

Per farlo funzionare ho dovuto mettere && solo fra questi 2 parolaNo() && caratteriNo(), agli altri nell'onkeyup ho dovuto lasciare il punto e virgola altrimenti non funzionavano.

Sono cose strane...per un niente non ti funziona
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

puoi spiegarti meglio, dove hai messo && tra parolaNo() && caratteriNo()

e dove hai lasciato come separatore i ;

Valeria.
 
Discussioni simili
Autore Titolo Forum Risposte Data
B Richiamare un array in una classe PHP 7
M Richiamare una singola funziona da file php PHP 2
M Richiamare funziona da file esterno jQuery 0
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
T [Javascript] Richiamare un file.js (iframe) in html Javascript 1
A Richiamare funzioni esterne JS da PHP PHP 9
C richiamare una funzione in un altro script php PHP 1
A [Flash] richiamare JS da AS3 Flash 0
G [PHP] RICHIAMARE TABELLA I CUI VALORI SONO STAMPATI A VIDEO E MODIFICARLI PHP 6
Shyson [WordPress] Richiamare nel mio sito numero iscritti da gruppo Facebook WordPress 0
S [PHP] Aiuto! Non riesco a richiamare una variabile PHP 2
A [Javascript] richiamare lo pseudo elemento after Javascript 1
B [Javascript] Richiamare un attributo DATA Javascript 0
gandalf1959 richiamare una funzione da un'altra funzione PHP 1
gandalf1959 richiamare una funzione: funziona solo la seconda volta... PHP 7
E Richiamare funzione Jquery dopo aggiornamento parziale di pagina tramite ajax jQuery 0
Z richiamare codice html in file php PHP 2
T Richiamare il click su un input type="image" alla pressione del tasto invio su una text area. PHP 0
B richiamare variabile javascript su pagina php Javascript 4
elpirata Richiamare un campo input in una form Javascript 2
M [Datetimepicker]Richiamare funzione per più id uguali jQuery 4
G Richiamare funzioni esterne PHP 0
K richiamare 2 volte stessa funzione Javascript 1
Shyson Richiamare funzione esterna jQuery 4
P 2 hosting da richiamare con dominio e sottodominio Hosting 0
scatenato richiamare id PHP 28
P Problema per richiamare una variabile... PHP 3
gandalf1959 Richiamare un javascript da php. Non funziona? PHP 2
I richiamare dati da menu a tendina mysql PHP 2
L problema nel richiamare gli id HTML e CSS 2
P come richiamare una variabile PHP 3
A richiamare funzione javascript dopo login in popup. Javascript 0
I richiamare dati da database in due variabili differenti PHP 2
L Non riesco a far funzionare un plugin (probabilmente ho sbagliato qualcosa nel richiamare lo script) jQuery 10
G Richiamare una classe Sviluppo app per iOS 0
I Richiamare funzione jquery all'invio del form php Javascript 6
M Richiamare una foto dal database PHP 3
M Richiamare una data inserita nel database tramite php. PHP 4
P creare e richiamare una stored procedure in sqlserver .NET Framework 1
R [Vb.net] richiamare funzione javascirpt .NET Framework 0
I richiamare id PHP 15
Shyson richiamare contatore PHP 5
Shyson Richiamare pagina personalizzata PHP 10
Shyson Richiamare funzione in altre pagine PHP 14
G Richiamare URL in Background (Nascosto) come se fosse eseguito da browser PHP 3
P Richiamare id e class HTML e CSS 3
Shyson Richiamare 2 getElementById uguali Javascript 0
S dove sbaglio a richiamare un valore? Javascript 4
borgo italia quale jquery richiamare jQuery 1

Discussioni simili