Mettere ciclo for

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Devo mettere un ciclo for altrimenti il codice non funziona, qualcuno sa come fare?

HTML:
function caratteriNonAmmessi() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"]; 
if((fx.nomeCampi.value.indexOf("<") != -1) || (fx.nomeCampi.value.indexOf(">") != -1) || (fx.nomeCampi.value.indexOf("\\") != -1)) {
fx.nomeCampi.style.backgroundColor='red'
alert("I caratteri  <  > \\  non sono ammessi");
fx.nomeCampi.focus();
return false;
}
return true
}
 
Così dovrebbe andare:
Codice:
function caratteriNonAmmessi()
{
    var fx = document.forms.mioform1;
    var nomeCampi = ["nome", "citta", "suoemail", "messaggio", "validator"];

    for (var i in nomeCampi) {
        var error = false;
        
        if (fx.nomeCampi[i].value.indexOf("<") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf(">") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf("\\") != -1) {
            error = true;
        }

        if (error) {
            fx.nomeCampi.style.backgroundColor = 'red'
            alert("I caratteri  <,  >, e \\ non sono ammessi");
            fx.nomeCampi.focus();
            
            return false;
        }
    }
    
    return true;
}
 
Così dovrebbe andare:
Codice:
function caratteriNonAmmessi()
{
    var fx = document.forms.mioform1;
    var nomeCampi = ["nome", "citta", "suoemail", "messaggio", "validator"];

    for (var i in nomeCampi) {
        var error = false;
        
        if (fx.nomeCampi[i].value.indexOf("<") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf(">") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf("\\") != -1) {
            error = true;
        }

        if (error) {
            fx.nomeCampi.style.backgroundColor = 'red'
            alert("I caratteri  <,  >, e \\ non sono ammessi");
            fx.nomeCampi.focus();
            
            return false;
        }
    }
    
    return true;
}
Non esce l'alert
 
Posta anche il codice HTML del form.


HTML:
<!-- Inizio codice POPUP-Scrivimi1 -->
                                                                                          
<div id="popup-Scrivimi1"> 

<div id="chiudi-Scrivimi1">
<a href="#" onclick="body.style.overflow='auto';document.getElementById('shade').style.display='none';document.getElementById('chiudi-Scrivimi1').style.display='none';document.getElementById('popup-Scrivimi1').style.display='none'">Close</a>  
</div>  <!-- chiudi-Scrivimi1 -->

<div id="headerFormScrivimi1">Scrivimi</div>

<form method="post" action="scrivimi2.php" id="mioform1" onkeyup="highlight(event)" onsubmit="return (xxx1()&amp;&amp;controlla1()&amp;&amp;caratteriNonAmmessi())">

<!-- Prende la data-ora browser del visitatore da script.js WebDate_Scrivimi() -->
 <input type="hidden" id="hdn_data_locale" name="WebDate_Scrivimi" />
 <script type="text/javascript">WebDate_Scrivimi();</script>   
	
<fieldset id="contenuto1"> 
<div class="linea1">
<label class="nomi1Scriv">Tuo NOME<span class="asterisco1">&nbsp;*</span></label>
<input type="text" name="nome" class="campi1" value="<?php echo($_SESSION['nome'])?>" onkeyup="contaNomeScrivimi1(this.form);" onblur="this.value=this.value.replace(/[\s]*/,'')" /> 
&nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/cxonfuso.gif" alt="Confuso" title="Confuso" onclick="document.forms.mioform1.messaggio.value+='CONFUSO';focus()" style="cursor:pointer" />
&nbsp;&nbsp;<img src="faccine/ixmpossibile.gif" alt="Impossibile" title="Impossibile" onclick="document.forms.mioform1.messaggio.value+='IMPOSSIBILE';focus()" style="cursor:pointer" />
&nbsp;<img src="faccine/txestardo.gif" alt="Testardo" title="Testardo" onclick="document.forms.mioform1.messaggio.value+='TESTARDO';focus()" style="cursor:pointer" />
</div>
				   <div class="linea1">
           <label class="nomi1">Tua CITT&Agrave;</label>
       <input type="text" name="citta" class="campi1" value="<?php echo($_SESSION['citta'])?>" onkeyup="contaCittaScrivimi1(this.form);" onblur="this.value=this.value.replace(/[\s]*/,'')" />
					&nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/pxiange.gif" alt="Piange" title="Piange" onclick="document.forms.mioform1.messaggio.value+='PIANGE';focus()" style="cursor:pointer" />
					&nbsp;&nbsp;<img src="faccine/bxacio.gif" alt="Bacio" title="Bacio" onclick="document.forms.mioform1.messaggio.value+='BACIO';focus()" style="cursor:pointer" />
          &nbsp;&nbsp;<img src="faccine/fxelice.gif" alt="Felice" title="Felice" onclick="document.forms.mioform1.messaggio.value+='FELICE';focus()" style="cursor:pointer" />
         </div>
				  <div class="linea1">
				 <label class="nomi1">Tua EMAIL<span class="asterisco1">&nbsp;*</span></label>
           <input type="text" name="suoemail" class="campi1" value="<?php echo($_SESSION['suoemail'])?>" onkeyup="contaEmailScrivimi1(this.form);" onblur="this.value=ignoreSpaces(this.value)" />   <!-- Rimuove tutti gli spazi (attacca le parole) -->
				&nbsp;&nbsp;&nbsp;&nbsp;<img src="faccine/rxide.gif" alt="Ride" title="Ride" onclick="document.forms.mioform1.messaggio.value+='RIDE';focus()" style="cursor:pointer" />
           &nbsp;&nbsp;<img src="faccine/oxcchiolino.gif" alt="Occhiolino" title="Occhiolino" onclick="document.forms.mioform1.messaggio.value+='OCCHIOLINO';focus()" style="cursor:pointer" />
					&nbsp;&nbsp;<img src="faccine/cxiao.gif" alt="Ciao" title="Ciao" onclick="document.forms.mioform1.messaggio.value+='CIAO';focus()" style="cursor:pointer" />
                 </div>
				 
		<div class="linea1">
			<div class="formattazione1">
			
      <div id="bottoneG"> 		
      <a href="javascript:insert_tag('G');">G</a>
      </div>
      <div id="bottoneC"> 
      <a href="javascript:insert_tag('C');">C</a>	
      </div>
      <div id="bottoneS"> 
      <a href="javascript:insert_tag('S');">S</a>
      </div> 
<select class="campoColori1" onchange="insert_tag('COLOR',this.options[this.selectedIndex].value);this.selectedIndex=0;">
<option>Color</option> 
<option class="cayenne-bg" value="cayenne">Cayenne</option>
<option class="rosso-bg" value="rosso">Rosso</option>
<option class="verde-bg" value="verde">Verde</option>
<option class="grigio-bg" value="grigio">Grigio</option>
 </select>
      </div> <!-- formattazione1 -->
			</div>  <!-- linea1 -->
   </fieldset> <!-- contenuto1 -->
	
	 <div id="contSX">
		<span class="testoMess">Testo</span><span class="asterisco1">&nbsp;*</span>
		<br />
		 <br />
  <span id="charCount">Rimanenti&nbsp;<span class="formattaNumero"><span id="Contatore">1000</span></span>
   <br />
  caratteri</span>
    </div>

<textarea name="messaggio" id="txtScrivimi1" cols="0" rows="0" onkeyup="conta(this)" onblur="this.value=this.value.replace(/[\s]*/,'')"><?php echo($_SESSION['messaggio'])?></textarea>

<div id="contDXScrivimi1">	 
   <img src="faccine/pxaura.gif" alt="Paura" title="Paura" onclick="document.forms.mioform1.messaggio.value+='PAURA';focus()" style="cursor:pointer" />
   </div>
	
	 <div id="footer-sxScrivimi1">
    <span class="campiObb">Campi obbligatori</span><span class="asterisco1">&nbsp;*</span>
					</div>
					<div id="footer-ctScrivimi1">
           	<input type="submit" value="Invia" class="manina-guest" />
						</div>
						
						<div id="footer-dxScrivimi1">
           <span class="red">Scrivi questo codice</span>
					 <br />
        	<input type="text" name="validator" id="validator" onkeyup="contaValid(this.form);" onblur="this.value=ignoreSpaces(this.value)" />
			      <script type="text/javascript">Captcha();</script>
				    </div>
      </form>

       </div> <!-- popup-Scrivimi1 -->  
		
    <!-- Fine codice POPUP-Scrivimi1 -->
 
mioform1 dev'essere il nome del form, non l'ID:
HTML:
<form method="post" action="scrivimi2.php" name="mioform1" onkeyup="highlight(event)" onsubmit="return (xxx1() && controlla1() && caratteriNonAmmessi());">
Inoltre scrivevi &amp; invece di &.
 
mioform1 dev'essere il nome del form, non l'ID:
HTML:
<form method="post" action="scrivimi2.php" name="mioform1" onkeyup="highlight(event)" onsubmit="return (xxx1() && controlla1() && caratteriNonAmmessi());">
Inoltre scrivevi &amp; invece di &.

Se metto name al posto di id, mi sballa tutto il form, ho messo &amp così viene valicato da W3c
 
Ho modificato questo, ma per il codice che si fa?

HTML:
<form method="post" name="mioform1" id="mioF" action="scrivimi2.php" onkeyup="highlight(event)" onsubmit="return (xxx1()&amp;&amp;controlla1()&amp;&amp;caratteriNonAmmessi());">
 
Guarda che dovrebbe essere validato anche senza &amp;. Comunque, al limite puoi creare una nuova funzione:
Codice:
function controllaForm()
{
    return (xxx1() && controlla1() && caratteriNonAmmessi());
}
E cambi il form così:
HTML:
<form method="post" name="mioform1" id="mioF" action="scrivimi2.php" onkeyup="highlight(event)" onsubmit="return controllaForm();">
 
Guarda che dovrebbe essere validato anche senza &amp;. Comunque, al limite puoi creare una nuova funzione:
Codice:
function controllaForm()
{
    return (xxx1() && controlla1() && caratteriNonAmmessi());
}
E cambi il form così:
HTML:
<form method="post" name="mioform1" id="mioF" action="scrivimi2.php" onkeyup="highlight(event)" onsubmit="return controllaForm();">

Ho modificato, il problema è che il codice non fa uscire l'alert, non intercetta i caratteri proibiti
 
Ho notato una cosa, che onsubmit="return (parolaNo() && controlla1() && caratteriNonAmmessi());">
non intercetta caratteriNonAmmessi()

Forse è per questo che non esce l'alert, ma non mi quadra visto che trova le altre 2 funzioni
 
Vedi se così cambia qualcosa:
Codice:
function caratteriNonAmmessi()
{
    var fx = document.forms.mioform1;
    var nomeCampi = ["nome", "citta", "suoemail", "messaggio", "validator"];
    var error;
    
    for (var i in nomeCampi) {
        error = false;
        
        if (fx.nomeCampi[i].value.indexOf("<") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf(">") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf("\\") != -1) {
            error = true;
        }

        if (error) {
            fx.nomeCampi.style.backgroundColor = 'red';
            alert("I caratteri  <,  >, e \\ non sono ammessi");
            fx.nomeCampi.focus();
            
            return false;
        }
    }
    
    return true;
}
Inoltre prova a spostare la funzione al primo posto in controllaForm.
 
Vedi se così cambia qualcosa:
Codice:
function caratteriNonAmmessi()
{
    var fx = document.forms.mioform1;
    var nomeCampi = ["nome", "citta", "suoemail", "messaggio", "validator"];
    var error;
    
    for (var i in nomeCampi) {
        error = false;
        
        if (fx.nomeCampi[i].value.indexOf("<") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf(">") != -1) {
            error = true;
        }

        if (fx.nomeCampi[i].value.indexOf("\\") != -1) {
            error = true;
        }

        if (error) {
            fx.nomeCampi.style.backgroundColor = 'red';
            alert("I caratteri  <,  >, e \\ non sono ammessi");
            fx.nomeCampi.focus();
            
            return false;
        }
    }
    
    return true;
}
Inoltre prova a spostare la funzione al primo posto in controllaForm.

Non va nemmeno così.

Se metto il controllo all'inizio non trova nemmeno gli altri 2

...onsubmit="return (caratteriNonAmmessi() && parolaNo() && controlla1());">
 
Ho fatto un ulteriore modifica ma nemmeno così l'onsubmit lo trova

PHP:
// Caratteri non ammessi
function caratteriNo() {
var fx = document.forms.mioform1;
var nomeCampi = ["nome","citta","suoemail","messaggio","validator"];
for (var i in nomeCampi) {
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'
alert("I caratteri  <  > \\ non sono ammessi");
fx[i].focus();
return false;
}
 }
return true;
}


<form method="post" name="mioform1" id="mioF" action="scrivimi2.php" onkeyup="highlight(event)" onsubmit="return (parolaNo() && controlla1() && caratteriNo());">
 
Ho risolto

PHP:
// Caratteri non ammessi
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'
alert("I caratteri  <  > \\\\  non sono ammessi");
fx[i].focus();
return false;
}
 }
return true;
}


<form method="post" name="mioform1" id="mioF" action="../scrivimi2.php" onkeyup="highlight(event)" onsubmit="return (controlla1() && parolaNo() && caratteriNo());">
 

Discussioni simili