Visualizzazione dei risultati da 1 a 7 su 7

Discussione: controllo radio form

  1. #1

    controllo radio form

    Ciao a tutti.
    ho una pagina dove ho una 30 di domande con 3 risposte possibili x ogni domanda su dei campi radio.
    La pagina viene generata dinamicamente tramite php.
    Vorrei inserire un controllo sui campi radio in modo che non sia possibile inviare il form se non sono state scelte tutte le risposte alle domande.

    I campi radio si chiamano dom_1, dom_2, dom_3 etc etc fino a 30 circa.
    Ho creato la seguente funzione:
    codice:
    function checkQuizDom (frm, mag){
    var msg1 = "Attenzione non hai selezionato la risposta alla domanda nr. ";			
    var elemento="";	
    	for (var i=1; i<=mag; i++) {
    		 elemento="document.frm.dom_"+i+"";
    		 if ((!elemento[0].checked) || (!elemento[1].checked) || (!elemento[2].checked)){
    		 alert(msg1 +i);		 		 
    		 return false;
    		 } 
    	}	
    }
    Poi richiamo la funzione dal form:

    <form action=\"$step\" method=\"post\" enctype=\"multipart/form-data\" name=\"frm\" onSubmit=\"return checkQuizDom(frm, $last_id)\">


    Dove la var $last_id tiene il numero totale delle domande.

    Il problema è che il controllo non funziona, ovvero non vede che ho selezionato uno dei radio della prima domanda, anche se seleziono tutto rimane sempre sul primo..

    dove diavolo sta l'errore??

    Grazie

    ciao
    Stega
    :-)

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    elemento = document.elements["frm.dom_"+i];
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Ho provato ma non esegue nessun controllo ed invia il form, una volta che invio nella console Javascript ho il seguente errore:

    Errore: document.elements has no properties
    File sorgente: http://stega/lavori/cliente_x/1.0/js...form_public.js
    Riga: 7

    Dove alla riga 7 ho:
    elemento = document.elements["frm.dom_"+i];

    Stega
    :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho dimenticato un pezzo. Mi sono concentrato sull'elemento, ed ho dimenticato il form.

    elemento = document.NOMEFORM.elements["dom_"+i];

    oppure:

    elemento = document.forms[0].elements["dom_"+i];

    (quest'ultimo nel caso che il form sia unico o sia sempre il primo della pagina).


    Se vuoi usare il nome del form che passi alla funzione (supponendo che passi la stringa definita nel name:

    elemento = document.forms[frm].elements["dom_"+i];


    Ma la cosa migliore sarebbe passare l'oggetto del form:
    <form action=\"$step\" method=\"post\" enctype=\"multipart/form-data\" name=\"frm\" onSubmit=\"return checkQuizDom(this, $last_id)\">

    che puoi usare:
    elemento = frm.elements["dom_"+i];
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    perfetto, così funziona..

    Ho anche aggiunto un focus().

    codice:
    function checkQuizDom (frm, mag){
    var msg1 = "Attenzione non hai selezionato la risposta alla domanda nr. ";			
    var elemento="";	
    	for (var i=1; i<=mag; i++) {
    		 elemento = document.frm.elements["dom_"+i];
    		 if ((!elemento[0].checked) && (!elemento[1].checked) && (!elemento[2].checked)){
    		 alert(msg1 +i);
    		 elemento[0].focus();		 		 
    		 return false;
    		 } 
    	}	
    }
    Grazie
    :adhone:
    ciao ciao
    Stega
    :-)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se frm indica un oggetto, non ci deve andare il document. davanti.
    Se indica una stringa, occorre usare il forms[].

    Se funziona e` solo nel browser IE che si mangia anche i sassi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    frm indica il nome del form.
    Se funziona e` solo nel browser IE che si mangia anche i sassi.
    Ho usato Firefox x testarlo e funziona senza problemi..

    Grazie..

    ciao
    Stega
    :-)

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.