Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    Verifica radio mi dà errore con un solo radio attivo

    Ho un form name="acquisto" onsubmit="return verificaacquisto()"

    e il name di ciascuna scelta radio è "attivo"

    Il controllo javascript per verificare che almeno un campo radio sia stato spuntato è questo:
    codice:
    function verificaacquisto()
    { var conta = document.acquisto.attivo;
     var num = 0;
     for(var i=0; i < conta.length; i++) {
                                                                     if(conta[i].checked) num++; 
                                                         }
    
    
    if(num==0) {
                             alert("Devi selezionare almeno un campo!");
                             return false;
                           } else {
                                         return true;
                                      }
     }
    Questo script funziona bene ma il problema l'ho quando c'è solo un campo radio attivo e naturalmente se c'è solo un campo quel campo va spuntato!
    Ho notato che quando i campi sono 2 o più di 2 il numero dei "conta.length" è corretto ma quando il campo è solo 1 il "conta.length" assume valore "undefined".

    Potete aiutarmi? grazie!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: Verifica radio mi dà errore con un solo radio attivo

    Originariamente inviato da mld
    ... c'è solo un campo radio attivo e naturalmente se c'è solo un campo quel campo va spuntato! ...
    Dal momento che i radio sono gestiti dinamicamente dal server (vedi php o asp) io fare spuntare direttamente dal server quando c'è solo un radio lo rendi checked da subito, è inutile verificare qualcosa che è unico e obbligatorio.
    se non ti piace prova cosi:
    codice:
    function verificaacquisto()
    { var conta = document.acquisto.attivo;
     var num = 0;
    if(conta.length != "undefined"){
     for(var i=0; i < conta.length; i++) {
                                                                     if(conta[i].checked) num++; 
                                                         }
    
    
    if(num==0) {
                             alert("Devi selezionare almeno un campo!");
                             return false;
                           } else {
                                         return true;
                                      }
    }else{
    alert("Devi selezionare l\'unico campo!");
                             return false;
    }
     }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

    Re: Verifica radio mi dà errore con un solo radio attivo

    Originariamente inviato da mld
    Ho un form name="acquisto" onsubmit="return verificaacquisto()"

    e il name di ciascuna scelta radio è "attivo"

    Il controllo javascript per verificare che almeno un campo radio sia stato spuntato è questo:
    codice:
    function verificaacquisto()
    { var conta = document.acquisto.attivo;
     var num = 0;
     for(var i=0; i < conta.length; i++) {
                                                                     if(conta[i].checked) num++; 
                                                         }
    
    
    if(num==0) {
                             alert("Devi selezionare almeno un campo!");
                             return false;
                           } else {
                                         return true;
                                      }
     }
    Questo script funziona bene ma il problema l'ho quando c'è solo un campo radio attivo e naturalmente se c'è solo un campo quel campo va spuntato!
    Ho notato che quando i campi sono 2 o più di 2 il numero dei "conta.length" è corretto ma quando il campo è solo 1 il "conta.length" assume valore "undefined".

    Potete aiutarmi? grazie!
    document.acquisto.attivo ritorna una collezione di oggetti solo se i campi radio sono più di uno (e quindi ha senso parlare di length) altrimenti ritorna un oggetto HTML non inserito in una collezione, quindi il length è undefined.

    Originariamente inviato da cavicchiandrea
    if(conta.length != "undefined"){
    undefined non va tra apici, non è una stringa.

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    se conta è una collezione (esiste il length) allora la scorri come hai fatto, in caso contrario controlli l'elemneto
    codice:
    function verificaacquisto(){
    	var conta = document.acquisto.attivo;
    	var num = 0;
    	if(conta.length){
    		for(var i=0; i < conta.length; i++) {
    			if(conta[i].checked) num++; 
    		}
    	}
    	else{
    		if(conta.checked) num++;
    	}
    
    	if(num==0) {
    		alert("Devi selezionare almeno un campo!");
    		return false;
    	} 
    	else {
    		return true;
    	}
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Perfetta l'ultima proposta quella di willybit.
    In effetti anch'io cercavo di fare qualcosa del genere però andavo a verificare questo:
    if(conta[0].checked)... però non andava bene...
    grazie mille per il suggerimento e grazie naturalmente anche a Luca e Andrea che mi hanno già aiutato altre volte e dato sempre dei validi suggerimenti!

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.