Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    40

    Problema con validatore per radio

    Salve ragazzi, avrei un problema. Ho una servlet che mi genera dinamicamente un elenco con un certo numero di radio e ho inserito un validatore che controlli che uno sia selezionato.
    Il Codice è questo:
    Codice PHP:
    <script language='JavaScript' type='text/javascript'>
    function 
    checkForm() {
        var 
    el document.forms[0].elements;
        for(var 
    el.length ; ++i) {
            if(
    el[i].type == "radio") {
                var 
    radiogroup el[el[i].name];
                var 
    itemchecked false;
                for(var 
    radiogroup.length; ++j) {
                    if(
    radiogroup[j].checked){
                        
    itemchecked true;
                        break;
                    }
                    
                }
                if(!
    itemchecked) {
                    
    alert("Scegli un valore");
                    return 
    false;
                }
            }
        }
        return 
    true;
    </script>
    </head>
    <body>
    <form name="myform" action="una pagina da mettere">


    <input type='radio' name='R1'></p>

    <input type='submit' value='Visualizza' name='B1' onclick='return checkForm()'>
    </form> 
    Ora se ci sono più radio il validator va bene. Se ce n'è uno solo, mi dice scegli un valore sia che l'abbia selezionato che al contrario.
    Siccome il caso di un solo radio è contemplato nella mia applicazione, chi mi aiuta a risolvere questo piccolo bug?
    Ringrazio anticipatamente quanti mi risponderanno

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    prova a mettere non solo < ma anche <= poichè se la lunghezza degli elementi selezionati è uno il ciclo for, mettendo <1 non parte o meglio, esegue solo x=0...dovrebbe essere quello il problema, non ho tempo per controllarlo tutto correttamente ma fai sta prova....

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    40
    Ti ringrazio per la risposta innanzitutto.
    A dire il vero, quella che mi hai detto è stata la prima cosa che ho pensato. Solo che così facendo, il comportamento per un radio rimane quello anomalo da me descritto, invece si sballa completamente nel caso in cui ce ne siano di più, in quanto sia che seleziono che non seleziono, non mi dà mai errore.
    Qualcuno ha un'idea?

  4. #4
    Codice PHP:
     var radiogroup el[el[i].name]; 
    questa non mi convince.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    radiogroup.length restituisce un numero quando radiogroup è il name comune di almento due elementi radio.

    Se ne hai uno solo, restituisce undefined.


    Perciò, se radiogroup.length restituisce undefined, devi fare radiogroup.checked

    altrimenti

    radiogroup[j].checked


    Però, tanto tempo fa, qualcuno che ne capiva mi ha fatto osservare che un solo radio è illogico
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    40
    Concordo col fatto che la cosa possa sembrare illogica, ma è possibile che il mio elenco generato dinamicamente mi possa fornire un solo radio e di certo non posso trascurarlo né vorrei mettermi a variare la pagina, se non in extrema ratio, solo per quel caso.
    Il ragionamento di pietro09 non fa una piega, ma siccome si tratta di uno script preso dalla rete, se qualcuno ha una variante valida, sono ben lieto di accoglierla

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: io non ho controllato e non so se vada bene

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Pagina senza titolo</title>
    
        <script language='JavaScript' type='text/javascript'>
    function checkForm() {
        var el = document.forms[0].elements;
        for(var i = 0 ; i < el.length ; ++i) {
            if(el[i].type == "radio") 
            {
                var radiogroup = el[el[i].name];
                var itemchecked = false;
                var n = radiogroup.length;
                if(n != undefined)
                {
                    for(var j = 0 ; j < radiogroup.length; ++j) {
                        if(radiogroup[j].checked){
                            itemchecked = true;
                            break;
                        }
                        
                    }
                }
                else
    	        {
                    if(radiogroup.checked)
                    {
                        itemchecked = true;
                        //break;
                    }
            		
    	        }
                
                
                if(!itemchecked) {
                    alert("Scegli un valore");
                    return false;
                }
            }
        }
        return true;
    } 
    
    </script>
    
    </head>
    <body>
        <form name="myform" action="una pagina da mettere">
            
    
    
                <input type='radio' name='R1'></p>
            <input type='submit' value='Visualizza' name='B1' onclick='return checkForm()'>
        </form>
    </body>
    </html>
    Pietro

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    40
    Sembra funzionare!
    Ti ringrazio tanto per il tuo contributo determinante

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.