Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Edipo
    Registrato dal
    May 2003
    Messaggi
    1,239

    Controlo su checkbox di quantità variabile_>>>

    Ciao a tutti...
    Uso questo script per effettuare un controllo su una serie infinita di checkbox, tutte dello stesso nome:

    codice:
    function controlla_cb(ff, nom, max){
      var n = 0;
      var cc;
      for (var i=0; i<max; i++) {
        cc = ff.elements[nom+i];
        if(cc.checked) n++;
      }
      // alert ("sono selezionati "+n+" checkbox");
      if(n==0) {
        alert("devi selezionare almeno un checkbox");
        return false;
      }
      return true;
    }
    e nel form:

    codice:
    onsubmit="controlla_cb(this, 'idmessaggio', <%=Conta%> );"
    nel quale Conta è una variabile in ASP che mi stampa in numero esatto di checkbox presenti al momento nel form.
    Il problema è che appunto non funziona, quando resta una sola checkbox e non la seleziono ed invio i dati, non accade nulla.
    Qualkuno sa aiutarmi?
    Grazie!
    "Il tempo aiuta a dimenticare e il destino regala sempre una seconda occasione.
    Ma aprirsi all'amore significa rendersi vulnerabili".

    Nicholas Sparks

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La variabile conta non ti serve: il JS sa quanti sono gli elementi di un vettore:
    codice:
    function controlla_cb(ff, nom){
      var n = 0;
      var cc = ff.elements[nom];
      for (var i=0; i<cc.length; i++) {
        if(cc[i].checked) n++;
      }
      // alert ("sono selezionati "+n+" checkbox");
      if(n==0) {
        alert("devi selezionare almeno un checkbox");
        return false;
      }
      return true;
    }
    Questo vale se tutti i checkbox hanno lo stesso nome (non occorre aggiungere il numero al nome: in una collezione di oggetti con lo stesso name (non lo stesso ID, pero`) viene usato un vettore per l'accesso.

    ----

    Altra possibile risposta.

    La tua pagina viene generata in ASP?
    Hai verificato se esiste il nome0 esiste? Perche` VBS (il linguaggio base di ASP) nei loop inizia da 1, a differenza dei linguaggi piu` evoluti dove si inizia da 0.
    Nel tuo JS inizi il conto da 0
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di Edipo
    Registrato dal
    May 2003
    Messaggi
    1,239
    Si genero i risultati con asp (vbs) e quindi parte da 1!!
    Ci sono dei problemi?
    Devo fare qualke controllo su?
    Grazie Mich_
    "Il tempo aiuta a dimenticare e il destino regala sempre una seconda occasione.
    Ma aprirsi all'amore significa rendersi vulnerabili".

    Nicholas Sparks

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come hai visto ti ho dato due risposte, interpretando la domanda in due modi diversi.

    Nel secondo modo individuavo un possibile errore, che non so se hai verificato/corretto.

    Inoltre non conosco la sintassi HTML che usi (la ho interpretata dal codice JS che hai postato), per cui posso solo fare supposizioni.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di Edipo
    Registrato dal
    May 2003
    Messaggi
    1,239
    Dunque.
    Mich_ Con la funzione che mi hai postato

    codice:
    function controlla_cb(ff, nom){
      var n = 0;
      var cc = ff.elements[nom];
      for (var i=0; i<cc.length; i++) {
        if(cc[i].checked) n++;
      }
      // alert ("sono selezionati "+n+" checkbox");
      if(n==0) {
        alert("devi selezionare almeno un checkbox");
        return false;
      }
      return true;
    }
    fila liscio quando ci sono più checkbox.
    Quando ne esiste una sola e la vado a checcare purtroppo esce sempre il popup del controllo ma la elimina comunque.
    A parte questo. ogni volta che visualizza il popup mi causa sempre un caricamento della pagina.
    Mi fate capire per favore? :master:
    Vi ringrazio
    "Il tempo aiuta a dimenticare e il destino regala sempre una seconda occasione.
    Ma aprirsi all'amore significa rendersi vulnerabili".

    Nicholas Sparks

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il reload della pagina lo fa perchè cmq vadano le cose il form lo invii

    onsubmit="return controlla_cb(this, 'idmessaggio');"

    scatta l' alert perchè un solo checkbox non genera un array (la length di tale array è undefined): non esiste quindi nomeelemento[indice]

    puoi sostituire
    codice:
      for (var i=0; i<cc.length; i++) {
        if(cc[i].checked) n++;
      }
    con
    codice:
      if(cc.length){
        for (var i=0; i<cc.length; i++) {
          if(cc[i].checked) n++;
        }
      }
      else if(cc.checked) n++;
    ciao

  7. #7
    Utente di HTML.it L'avatar di Edipo
    Registrato dal
    May 2003
    Messaggi
    1,239
    Grazie 1000 Mich_ & Xinod !!! :metallica
    Funziona alla perfezione.
    "Il tempo aiuta a dimenticare e il destino regala sempre una seconda occasione.
    Ma aprirsi all'amore significa rendersi vulnerabili".

    Nicholas Sparks

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.