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

    rendere obbligatoria la scelta tra una serie di radio

    Ho questo form con numeroso gruppo di controlli radio
    codice:
    <form id="form2" name="form2" method="post" action="register_post.php" onsubmit="return check_valid(this);">
    <input type="radio" name="auto" value="auto_1.png" />
    <input type="radio" name="auto" value="auto_2.png" />
    <input type="radio" name="auto" value="auto_3.png" />
    ......................
    <input name="priorita" size="20" type="text" class="si" />
    <input name="Registra" value="Registra" type="submit" />
    </form>
    Nel JS ho la funzione check_valid(this) che valida i controlli a cui do la class="si".
    Come faccio a rendere obbligatoria la scedlta di uno di questi radio?
    Non credo che posso dare la class="si" a tutti i controlli radio.
    Vi ringrazio per il suggerimento.


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    51
    puoi dare la classe=si a tutti i radio button

  3. #3
    Grazie websun
    Ora provo subito e ti faccio sapere

  4. #4
    Ciao websun
    mi spiace ma così non funziona.
    qualsiasi radio vado a scegliere mi viene mostrato il messaggio
    "immagine_auto: campo non spuntato".
    Secondo me dando la classe="si" a tutti i radio, il JS si aspetta che tutti siano checked.
    Per tutti gli altri controlli il resto del codice JS funziona regolarmente.

    Per comodità posto anche un frammento di codice JS
    codice:
    function check_valid(theForm) {
    	for (i=0; i < theForm.elements.length; i++) {
    		if (theForm.elements[i].value == "" && theForm.elements[i].className == "si") {
    			alert (theForm.elements[i].name + ": campo vuoto non accettabile");
    			theForm.elements[i].value = "";
    			theForm.elements[i].focus();
    			return false;
    		}
    		if (theForm.elements[i].className == "si") {
    			if (theForm.elements[i].name == "immagine_auto") {	//	radio
    				if (theForm.elements[i].checked == false) {
    					alert(theForm.elements[i].name + ": campo non spuntato");
    //					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    			if (theForm.elements[i].name == "privacy") {		//	checkbox
    				if (theForm.elements[i].checked == false) {
    					alert(theForm.elements[i].name + ": campo non spuntato");
    //					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    			if (theForm.elements[i].name == "username") {		//	text
    				var errato="";
    				errato = verify_username(theForm.elements[i].value);
    				if (errato != "") {
    					alert ("Per " + theForm.elements[i].name + " " + errato);
    					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    //			============== continua elenco dei controlli da controllare ==============
    		}
    	}
    }
    function verify_username (strng) {
    	//	=========================
    }

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    quando più elementi di un form hanno lo stesso nome formano una collezione.
    devi controllare la collezione quando il campo si chiama "auto" e dare a un solo radio la classe "si"
    codice:
    function check_valid(theForm) {
    	var autoSelezionato
    	for (i=0; i < theForm.elements.length; i++) {
    		if (theForm.elements[i].value == "" && theForm.elements[i].className == "si") {
    			alert (theForm.elements[i].name + ": campo vuoto non accettabile");
    			theForm.elements[i].value = "";
    			theForm.elements[i].focus();
    			return false;
    		}
    		if (theForm.elements[i].className == "si") {
    			if (theForm.elements[i].name == "immagine_auto") {	//	radio
    				if (theForm.elements[i].checked == false) {
    					alert(theForm.elements[i].name + ": campo non spuntato");
    //					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    			if (theForm.elements[i].name == "privacy") {		//	checkbox
    				if (theForm.elements[i].checked == false) {
    					alert(theForm.elements[i].name + ": campo non spuntato");
    //					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    			if (theForm.elements[i].name == "username") {		//	text
    				var errato="";
    				errato = verify_username(theForm.elements[i].value);
    				if (errato != "") {
    					alert ("Per " + theForm.elements[i].name + " " + errato);
    					theForm.elements[i].value = "";
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    			if (theForm.elements[i].name == "auto") {	
    				el=theForm.auto;
    				autoSelezionato=false;
    				for(j=0;j<el.length;j++){
    					if(el[j].checked)autoSelezionato=true;
    				}
    				if(!autoSelezionato){
    					alert(theForm.elements[i].name + ": campo non spuntato");
    					theForm.elements[i].focus();
    					return false;
    				}
    			}
    //			============== continua elenco dei controlli da controllare ==============
    		}
    	}
    }
    codice:
    <form id="form2" name="form2" method="post" action="register_post.php" onsubmit="return check_valid(this);">
    <input type="radio" name="auto" value="auto_1.png" class="si" />
    <input type="radio" name="auto" value="auto_2.png" />
    <input type="radio" name="auto" value="auto_3.png" />
    ......................
    <input name="priorita" size="20" type="text" class="si" />
    <input name="Registra" value="Registra" type="submit" />
    </form>

  6. #6
    Perfetto willybit
    Ora funziona. Trovato un radio con class="si" si cicla tutto il gruppo alla ricerca del radio selezionato.
    Grazie

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.