Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598

    Radio button almeno uno selezionato

    Salve, ho la seguente form:

    codice:
    <form  method="get" action="paginasuccessiva">      
    <input type="radio" name="mgruppo" value="1" />bottone1	     
    <input type="radio" name="mgruppo" value="2"/>bottone2
    <input type="submit" name="Submit" value="submit" />
    </form>
    Ora alla pressione del tasto submit vorrei verificare che almeno 1 radio button fosse selezionato ed in caso contrario mostrare un alert, mi indicate la retta via?
    grazie
    Soffrire sempre mollare mai

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    La via più semplice è selezionarne uno sin dal principio:

    codice:
    <form  method="get" action="paginasuccessiva">      
    <input type="radio" name="mgruppo" checked value="1" />bottone1	     
    <input type="radio" name="mgruppo" value="2"/>bottone2
    <input type="submit" name="Submit" value="submit" />
    </form>
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598
    la lista è creata dinamenticante...
    dovrei inserire un if... e non vorrei "sporcare il codice" con delle verifiche se possibile
    Soffrire sempre mollare mai

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function checkRadioboxes () {
    	var bChecked = true;
    	for (var nItem = 0; nItem < this.length && !this[nItem].checked; bChecked = this[nItem++].checked);
    	if (!bChecked) { alert("Devi selezionare almeno un\'opzione."); }
    	return bChecked;
    }
    </script>
    
    </head>
    <body>
    
    <form  method="get" action="paginasuccessiva" onsubmit="return checkRadioboxes.call(this.mgruppo);">
    <input type="radio" name="mgruppo" value="1" />bottone1	     
    <input type="radio" name="mgruppo" value="2"/>bottone2
    <input type="submit" name="Submit" value="submit" />
    </form>
    
    </body>
    </html>
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598
    con 1 solo elemento non funziona....
    Soffrire sempre mollare mai

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,696
    Ciao,
    avere un solo radio button sarebbe un'ipotesi poco probabile se non assurda. Ad ogni modo è possibile avere tale situazione ma, in questo caso, ciò che viene passato alla funzione è il singolo elemento input e non l'oggetto NodeList. Per questo motivo il ciclo for sarà saltato totalmente sfalsando il risultato.

    Dovresti quindi aggiungere un ulteriore controllo che verifichi se ci sia un solo elemento oppure una lista di elementi.

    Una soluzione pratica può essere quella di forzare sempre l'ottenimento di un array da mandare in pasto al ciclo for.

    Io farei una cosa del genere, con un ciclo "for in":
    codice:
    function checkRadioboxes () {
    	var list = (this.length) ? this : [this];
    	for (var id in list){if(list[id].checked) return true;};
    	alert("Devi selezionare almeno un'opzione.");
    	return false;
    }
    Per i puritani della programmazione (usando un return singolo):
    codice:
    function checkRadioboxes () {
    	var list = (this.length) ? this : [this];
    	var isChecked = false;
    	for (var id in list){if(list[id].checked){isChecked=true; break}};
    	if(!isChecked) alert("Devi selezionare almeno un'opzione.");
    	return isChecked;
    }
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    598

    RISOLTO

    grazie 1000 funziona!
    lo so una solo checkbox è assurdo, ma la lista è creata dinamicamente, può capitare che ve ne sia 1 come 10.
    Soffrire sempre mollare mai

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