Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297

    Problema su controllo checkbox statiche/dinamiche

    Ciao a tutti.
    Ho provato a fare una ricerca nel forum ma nn mi sembra di avere trovato nulla che facesse al caso mio.
    Dunque, il mio problema riguarda il controllo su checkbox parte della quali statiche e parte dinamiche ... mi spiego.

    Nel mio form ho 1 checkbox statico
    <input type="checkbox" name="noClienti" value="noClienti">

    e sotto ad esso mi ciclano tanti check box [quindi dinamci e di numero casuale] quanti clienti recupero dalla mia tabella del db. Praticamente
    <input type="checkbox" name="cliente1" value="01244"> nome cliente
    <input type="checkbox" name="cliente2" value="51426"> nome cliente
    <input type="checkbox" name="cliente3" value="89564"> nome cliente
    <input type="checkbox" name="cliente4" value="45787"> nome cliente
    ..... ecc ecc

    Io vorrei che se checked il noClienti [quello statico] tutti gli altri dinamici mi diventino disabled [ovvero non selezionabili] e se qualcuno di essi prima era stato selezionato ne venga tolto il check e reso disabled.

    Mentre se scelgo anche solo uno di quelli dinamci il check statico noClienti mi diventi disabled e non selezionato [se lo era stato].

    E un pò complicato ed infatti sono in alto mare ... soprattutto perche quelli dinamici posso essere 1 o N ...

    Grazie 1000
    Franz

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    C'è un problema concettuale... una volta che hai reso qualcosa disabled, devi avere anche qualcosa per renderlo enabled di nuovo, perché una checkbox disabled non cambierà il suo stato (checked/unchecked) al click.

    Una possibile soluzione potrebbe essere usare due radio button, uno per la prima scelta e uno per tutte le checkbox clienti.

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    
    var allChecks;
    
    function oneChecked() {
      var oneChecked = false;
      for (var i = 0; i < allChecks.length; i++) {
        allChecks[i].disabled = false;
    	oneChecked = oneChecked || allChecks[i].checked;
      }
      return oneChecked;
    }
    
    window.onload = function() {
      allChecks = document.getElementById('clientlist').getElementsByTagName('input');
      for (var i = 0; i < allChecks.length; i++) {
        allChecks[i].onclick = function() {
    		if (!this.checked && !oneChecked()) {
    			  this.checked = true;
    		}
    	}
      }
    }
    
    function unselectAll(checkContainer) {
      document.getElementById(checkContainer).style.display = "none";
      for (var i = 0; i < allChecks.length; i++) {
        allChecks[i].disabled = true;
      }
    }
    
    function enabledClientList(checkContainer) {
      document.getElementById(checkContainer).style.display = "block";
      if (!oneChecked()) {
        allChecks[0].checked = true;
      }
    }
    </script>
    </head>
    <body>
    <form id="checkboxtest">
      <input name="radiobutton[]" type="radio" value="NoClient" checked onclick="unselectAll('clientlist');" /><label>Nessun Cliente</label>
    
      <input name="radiobutton[]" type="radio" value="SelectClient" onclick="enabledClientList('clientlist');"  /><label>Scelta Cliente</label>
    
    <fieldset id="clientlist" style="display:none;">
      <legend>Client List</legend>
      <input type="checkbox" name="clientChecks[]" value="12098" />Cliente 12098
    
      <input type="checkbox" name="clientChecks[]" value="34567" />Cliente 34567
    
      <input type="checkbox" name="clientChecks[]" value="41298" />Cliente 41298
    
      <input type="checkbox" name="clientChecks[]" value="8276" />Cliente 8276
    </fieldset>
    </form>
    </body>
    </html>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.