Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [js] scorrere elementi form

    Ciao a tutti,
    sono un pò impacciato con js. Ho fatto una piccola funzione che scorre attraverso tutti gli elementi del mio form e ne cambia il colore precedentemente segnalato come errore.
    codice:
    function resetColor(f){
    	for (var i=0; i<f.elements.length; i++) {
    		document.getElementById(f.elements[i]).style.backgroundColor="";
    		}
    	}
    Ho però un errore di questo tipo:
    Errore: document.getElementById(f.elements[i]) has no properties
    :master:

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    sicuro che ogni elemento del form abbia un id?
    un name non basterebbe

  3. #3
    l'id ce l'hanno di sicuro perchè li uso anche in un altra funzione per cambiare il colore di sfondo in caso il campo inserito non sia corretto.

    Questa funzione dovrebbe ripulire quello fatto dalla precedente ogni volta che viene fatto il submit.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <style type="text/css">
    <!--
    .pippo {background-color:red}
    -->
    </style>
    <script language="JavaScript" type="text/javascript">
    <!--
    function resetColor(f){
    	for (var i=0; i<f.elements.length; i++) {
    	  curObj = f.elements[i];
    		document.getElementById(curObj.id).style.backgroundColor="";
    	}
    }
    //-->
    </script>
    
    </head>
    <body>
    <form id="myForm" name="myForm" >
     <input type="text" id="t1" style="background-color:red">
     <input type="text" id="t2" style="background-color:red">
     <input type="text" id="t3" style="background-color:red">
     <input type="text" id="t4" style="background-color:red">   
    </form> 
    <input type="button" value="Ripulisci" onclick="resetColor(document.getElementById('myForm'))">
    </body>
    </html>

  5. #5
    allora nell'ultimo caso mi da sempre il medesimo errore:
    Errore: document.getElementById(curObj.id) has no properties
    Preciso però che la funzione resetColor() è chiamata dalla fun. principale così:
    codice:
    function newsLetter(f){
    	resetColor(f);
    	if(f.name.value == ""){ ...

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da Sandrocchio_0.1
    allora nell'ultimo caso mi da sempre il medesimo errore:

    Preciso però che la funzione resetColor() è chiamata dalla fun. principale così:
    codice:
    function newsLetter(f){
    	resetColor(f);
    	if(f.name.value == ""){ ...
    Quello che hai postato non basta.

    Posta anche il richiamo a newsLetter.

  7. #7
    codice:
    <form name="newsletter" onsubmit="return newsLetter(this);" action="<%= request.getContextPath() %>/newsletter" method="post"> 
    <fieldset class="simple_search"> 
    <legend class="legend">Modulo di iscrizione</legend>
    
    <span style="color:#CC0000;">Tutti i campi sono obbligatori</span>
    
    
    <input type="hidden" name="action" value="subscribe" />
    <input type="text" name="name" id="name" class="inputText"  /> nome
    
    <input type="text" name="surname" id="surname" class="inputText" /> cognome
    
    <input type="text" name="professione" id="professione"  class="inputText" /> professione
    
    ...

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non tutti gli elementi della form hanno un id !!!

    codice:
    function resetColor(f){
     for (var i=0; i<f.elements.length; i++) {
      curObj = f.elements[i];
      if (curObj.tagName == 'INPUT' && curObj.type == 'text') {
       document.getElementById(curObj.id).style.backgroundColor="";
      }
     }
    }
    oppure

    codice:
    function resetColor(f){
     for (var i=0; i<f.elements.length; i++) {
      curObj = f.elements[i];
      if (curObj.tagName == 'INPUT' && curObj.type == 'text' && curObj.id != '') {
       document.getElementById(curObj.id).style.backgroundColor="";
      }
     }
    }

  9. #9
    ok, è perfetto.

    Però voglio anche capire il perchè del mio errore.
    Vediamo: Se ho ben capito il mio script non funzionava perchè incontrava quel campo "hidden" sprovvisto dell'id? E quindi dava quell'errore. Giusto??

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da Sandrocchio_0.1
    ok, è perfetto.

    Però voglio anche capire il perchè del mio errore.
    Vediamo: Se ho ben capito il mio script non funzionava perchè incontrava quel campo "hidden" sprovvisto dell'id? E quindi dava quell'errore. Giusto??
    si
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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 © 2025 vBulletin Solutions, Inc. All rights reserved.