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

    verifica checked in radiobutton

    Ciao ragazzi ho trovato in giro questo script che dovrebbe verificare se almeno un'opzione di un checkbox è segnata ma mi genera un ciclo infinito che impalla il browser....qualche consiglio?


    Codice PHP:
            var cb document.form1.angoliarrotondati;
            var 
    num 0;
            for(var 
    i=0i<cb.length;) {
            if(
    cb.checkednum++;
            }
            if(
    num==0) {
            
    alert("devi selezionare almeno un'opzione per \"Angoli arrotondati\"");
            
    convalida=false;
            } else {
            
    convalida=true;
            } 

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    1) cosa restituisca document.form1.angoliarrotondati; lo sai solo tu (noi non vediamo il codice, almeno tu assicurati che sia una collection di checkboxes prima di ciclarla)


    2) "...for(var i=0; i<cb.length; i++) {..." (

    Devi incrementare la variabile i altrimenti non aumentando mai crea un ciclo infinito (e non succederà mai che i diventi uguale a cb.length)


    3) Stai ricadendo nello stesso errore dell'altra volta sui cicli

    se cb è un array, all'interno del ciclo NON puoi controllare se "cb.checked"
    tu devi controllare se l' "i-esimo" elemento dell'array cb è checked (altrimenti pensa a che ti serve usare un ciclo for...)

    codice:
    for(var i=0; i<cb.length;  i++) {
            if(cb[i].checked) num++;
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Per il fatto dell'array hai ragione...avrei dovuto controllare (è uno script trovato)

    inoltre mettere i++ mi sembrava superfluo visto che l'incremento dovrebbe avvenire solo if(cb[i].checked), no?

    Corregendolo come hai detto non genera il ciclo infinito ma entra sempre nell'if e mai nell'else (anche se uno dei checkbox è selezionato)

    var cb = document.form1.perforazione;
    var num = 0;
    for(var i=0; i<cb.length; i++) {
    if(cb[i].checked) i++;
    }
    if(num==0) {
    alert("devi selezionare almeno un'opzione per \"Perforazione\"");
    convalida=false;
    } else {
    convalida=true;
    }

    Edit: ho fatto un alert di cd.length per rendermi conto di cosa restituisse e mi dice undefined...

    eppure nella pagina è presente questo (in effetti sotto lo script js)

    <input type="radio" id="perforazione" name="perforazione" value="0" /><label for="perforazione">No € 0.00 (netto) € 0.00 (lordo)
    </label>


    <input type="radio" id="perforazione" name="perforazione" value="1" /><label for="perforazione">Si € 15.00 (netto) € 18.00 (lordo)</label>


    OT: "l'altra volta" ho risolto ciclando TUTTI gli id e settando display:none; lol

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    if(cb[i].checked) num++;
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Ormai mi odierai, anche così non funziona, entra sempre nell'if e mai nell'else...non sarà mica num===0 ? provo...

    Codice PHP:
            var cb document.getElementById('perforazione');
            var 
    num 0;
            for(var 
    i=0i<cb.lengthi++) {
            if(
    cb[i].checkednum++;
            }
            if(
    num==0) {
            
    alert("devi selezionare almeno un'opzione per \"Perforazione\"");
            
    convalida=false;
            } else {
            
    convalida=true;
            } 
    Edit: nada....

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Secondo me se non metti anche il markup del form, per capire cosa sono i vari elementi non ci cavi fuori i piedi.

    P.S. Ma un minimo il javascript lo conosci? (scusa la curiosità, ma da quello che scrivi [inteso come js] non sembrerebbe)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    P.S. Ma un minimo il javascript lo conosci? (scusa la curiosità, ma da quello che scrivi [inteso come js] non sembrerebbe)
    ho un'infarinatura generale di js altrimenti non verrei a chiedere consiglio per cose così semplici (per voi ma non per me )

    Detto questo: what's markup? ho fatto delle alert per vedere che valori restituivano certe variabili e ad esempio cd.length è "undefined"

  8. #8
    forse non sarò un grande esperto di js ma so che spesso la soluzione migliore è la più semplice:

    Codice PHP:
            if(document.getElementById("perforazione1").checked == false && document.getElementById("perforazione2").checked ==false){
                
    convalida=false;
            } else {
                
    convalida=true;
            } 
    Ora funziona: almeno uno dei due deve avere il check per proseguire lo script....

    Sarebbe cmq interessante scoprire perchè l'altro script restava sempre nell'if

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    perchè

    var cb = document.getElementById('perforazione');

    non restituisce un array
    restituisce un singolo object che probabilmente avrà proprietà 'length' undefined

    se vuoi che cb sia una collection di checkboxes devi scrievre ad esempio

    codice:
    var cb = [];
    var tutti_gli_input_della_pagina = document.getElementsByTagName('input'); 
    var numero_di_tutti_gli_input_della_pagina = tutti_gli_input_della_pagina.length;
    
    
    for (
          var indice_del_ciclo = 0; 
          indice_del_ciclo < numero_di_tutti_gli_input_della_pagina; 
          indice_del_ciclo++
    )  {
    
       if (tutti_gli_input_della_pagina[indice_del_ciclo].type.toString().toLowerCase() == 'checkbox') {
            cb[cb.length] = tutti_gli_input_della_pagina[indice_del_ciclo]
       }
    
    }
    alla fine la variabile cb contiene tutte le checkbox della pagina
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.