Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Controllo su più campi dinamici

    Mi sono avventurata in uno script per controllare i campi (dinamici) di una tabella...
    Come ho già specificato nel thread

    http://forum.html.it/forum/showthrea...hreadid=771624

    il mio problema ora è quello di controllare che tutti i campi chiamati "qta" siano stati compilati...
    Ho provato con questo ma non funziona per niente. Ho creatooooo!
    codice:
    function Controllo() {
    for(var i=1; i <= =<%=num_row%>; i++) { 
    var qtacheck = document.getElementById('qta'+i).value;
    if ((qtacheck == "") || (qtacheck == "undefined")) {
               alert("Devi obbligatoriamente indicare tutte le quantità");
               document.ordina2.qtacheck.select();
               return false;
    }
    } 
    else {
               document.ordina2.action = "invia.asp";
               document.ordina2.submit();
            }
    }
    Dove ho BESTEMMIATO...? (abbiate pietà, io provo.... )
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  2. #2
    come richiami la funzione Controllo()?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    questa riga e` sbagliata:
    document.ordina2.qtacheck.select();

    infatti qtacheck e` una variabile JS, non un oggetto del DOM.

    Supponendo che ordina2 sia il nome del form (definito nel tag <form>, puoi sostituirla con:
    document.ordina2.elements(qtacheck). ...

    Oppure, per essere congruente con quanto scritto sopra:
    document.getElementById('qta'+i). ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Dunque, l'ho modificata così
    codice:
    function Controllo() {
    for(var i=1; i <= <%=num_row%>; i++) { 
    var qtacheck = document.getElementById('qta'+i).value;
    if ((qtacheck == "") || (qtacheck == "undefined")) {
               alert("Devi obbligatoriamente indicare tutte le quantità");
               document.getElementById('qta'+i).select();
               return false;
    }
    } 
    else {
               document.ordina2.action = "invia.asp";
               document.ordina2.submit();
            }
    }
    MA NON FUNZIONA LO STESSOOOOOOOOOOOOO!!!!

    Controllo() Lo richiamo dal pulsante di invio del Form, con OnClick.....
    :master:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  5. #5
    Scusa ma ti dà qualche sorta di errore o più semplicemente si sta zitto


  6. #6
    Allora, facciamo un po' d'ordine.......
    Il codice l'ho modificato totalmente, ora sto usando questo che mi controlla tutto...
    codice:
    function Controllo() { 
      var i,p,q,nm,test,num,min,max,errors='',args=Controllo.arguments;
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=trova_ogg(args[i]);
        if (val) { nm=val.name; if ((val=val.value)!="") {
          if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
            if (p<1 || p==(val.length-1)) errors+='- La Mail inserita non è valida.\n';
          } else if (test!='R') { num = parseFloat(val);
            if (isNaN(val)) errors+='- Il campo Quantità '+nm+' può contenere solo numeri.\n';
            if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
              min=test.substring(8,p); max=test.substring(p+1);
              if (num<min || max<num) errors+='- Il campo Quantità '+nm+' deve contenere numeri compresi tra '+min+' e '+max+'.\n';
        } } } else if (test.charAt(0) == 'R') errors += '- Il campo Quantità '+nm+' è obbligatorio.\n'; }
      } if (errors) alert('Si sono verificati i seguenti errori:\n'+errors);
      document.riporta_errori = (errors == '');
      document.ordina2.qta1.select();[/COLOR] 
    }
    Controllo() lo richiamo da un pulsante in modo dinamico, aiutandomi con un ciclo ASP.
    Funziona alla perfezione....

    L'unica piccola modifica che vorrei apportare è all'ultima riga. Cioè fargli selezionare non sempre lo stesso campo (qta1) ma il primo campo che rileva compilato in modo errato.
    Ho provato (inventando....) con
    codice:
    document.getElementById('nm').select();
    e con
    codice:
    document.ordina2.getElementById('nm').select();
    ma in entrambi i casi, mi mostra l'alert e poi invia comunque il modulo.
    Credo che stavolta la soluzione sia facile...... (o no?)
    :master:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Prova cosi' (ho indentato meglio il sorgente... )
    codice:
    function Controllo() { 
    	var i,p,q,nm,test,num,min,max,errors='',args=Controllo.arguments,nm0='';
    	for (i=0; i<(args.length-2); i+=3) { 
    		test=args[i+2]; val=trova_ogg(args[i]);
    		if (val) { 
    			nm=val.name; 
    			if ((val=val.value)!="") {
    				if (test.indexOf('isEmail')!=-1) { 
    					p=val.indexOf('@');
    					if (p<1 || p==(val.length-1)) {
    						if(!nm0) nm0=nm;
    						errors+='- La Mail inserita non è valida.\n';
    					}
    				} else if (test!='R') { 
    					num = parseFloat(val);
    					if (isNaN(val)) {
    						if(!nm0) nm0=nm;
    						errors+='- Il campo Quantità '+nm+' può contenere solo numeri.\n';
    					}
    					if (test.indexOf('inRange') != -1) { 
    						p=test.indexOf(':');
    						min=test.substring(8,p); max=test.substring(p+1);
    						if (num<min || max<num) {
    						if(!nm0) nm0=nm;
    							errors+='- Il campo Quantità '+nm+' deve contenere numeri compresi tra '+min+' e '+max+'.\n';
    						}
    					}
    				} 
    			} else if (test.charAt(0) == 'R') {
    				if(!nm0) nm0=nm;
    				errors += '- Il campo Quantità '+nm+' è obbligatorio.\n'; 
    			}
    		}
    	} 
    	if (errors) {
    		alert('Si sono verificati i seguenti errori:\n'+errors);
    		document.ordina2.elements[nm0].focus();				return false;
    	}
    	document.riporta_errori = (errors == '');
    	return true; 
    }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    Innanzitutto grazie della messa in ordine ......

    Ho messo il tuo codice nella pagina, QUASI funziona!!!
    Il problema è che se c'è un campo compilato male ora accade questo:

    1. Clicco sul pulsante Invia
    2. Appare l'alert che segnala l'errore (o gli errori)
    3. Viene selezionato effettivamente il primo campo compilato male
    4. IL MODULO PARTE LO STESSO!

    Chiaramente punto 3. e punto 4. si susseguono in rapidissma successione (ma col mio occhio lesto ho visto dove si posiziona il cursore prima che ci sia il cambio pagina!!)

    Nella mia immensa ignoranza dunque suppongo che ci sia qualcosa di sbagliato qui....
    codice:
    	if (errors) {
    		alert('Si sono verificati i seguenti errori:\n'+errors);
    		document.ordina2.elements[nm0].focus();				return false;
    	}
    	document.riporta_errori = (errors == '');
    	return true; 
    }
    Ho provato a smanettare ma senza successo...
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  9. #9
    codice:
    <form onsubmit="return Controllo();">
    ciao

  10. #10
    VAR....
    Parte lo stesso!....

    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

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