Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92

    massimo check su checkbox[]

    Ciao,
    non riesco a fare un controllo semplicissimo, ho una serie di checkbox che compongono un array

    <input type="checkbox" class="checkbox" value="'1" name="vetrina[]" id="ventrina" />
    <input type="checkbox" class="checkbox" value="'2" name="vetrina[]" id="ventrina" />
    <input type="checkbox" class="checkbox" value="'3" name="vetrina[]" id="ventrina" />
    <input type="checkbox" class="checkbox" value="'4" name="vetrina[]" id="ventrina" />

    devo verificare che siano selezionate massimo 2 opzioni...riesco a farlo se le check hanno un nome diverso, così ad array no.

    mi potete aiutare
    grazie
    Andrea

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

    P.S. gli id devo essere univoci id1 id2 id3 etc... e non devo iniziare con un numero
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92
    Ti chiedo scusa, ma proprio non riesco.

    ho modificato così, id univoco, nome del campo sempre array:

    <input type="checkbox" class="checkbox" value="1" name="vetrina[]" id="vetrina0" />
    <input type="checkbox" class="checkbox" value="2" name="vetrina[]" id="vetrina1" />
    <input type="checkbox" class="checkbox" value="3" name="vetrina[]" id="vetrina2" />
    <input type="checkbox" class="checkbox" value="4" name="vetrina[]" id="vetrina3" />
    <input type="checkbox" class="checkbox" value="5" name="vetrina[]" id="vetrina4" />
    <input type="checkbox" class="checkbox" value="6" name="vetrina[]" id="vetrina5" />

    il js che ho provato ad implementare per il controllo è questo

    for (var f=0; f<6; f++){
    var checkgroup = document.forms.form.getElementById(vetrina[f]);
    var limit=3
    for (var i=0; i<checkgroup.length; i++){
    checkgroup[i].onclick=function(){
    var checkedcount=0
    for (var i=0; i<checkgroup.length; i++)
    checkedcount+=(checkgroup[i].checked)? 1 : 0
    if (checkedcount>limit){
    alert("Hai superato il limite: "+limit+" non di piu")
    this.checked=false
    }
    }
    }
    }

  4. #4
    In velocità ho sistemato il tuo codice: c'erano un po' di errori, e ti consiglio in ogni caso di mettere sempre il punto e virgola alla fine di ogni istruzione.
    L'ho provato con Firefox e IE8.

    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>Max 3 checkbox selezionate</title>
        <script type="text/javascript">
    		function checkCount() {
    			var checkGroup = [];
    			var limit = 3;
    			for (var f=0; f<6; f++){
    				checkGroup.push(document.getElementById('vetrina'+f));
    				for (var i=0; i<checkGroup.length; i++){
    					checkGroup[i].onclick = function() {
    						var checkedCount = 0;
    						for (var j=0; j<checkGroup.length; j++) {
    							checkedCount += (checkGroup[j].checked)? 1 : 0;
    							if (checkedCount>limit) {
    								alert("Hai superato il limite di " + limit + " checkbox selezionate.")
    								this.checked = false;
    								break;
    							}
    						}
    					}
    				}
    			}
    		}
    	</script>
      </head>
      <body onload="checkCount()">
    	<form action="" method="post">
    		<input type="checkbox" class="checkbox" value="1" name="vetrina[]" id="vetrina0" /><label for="vetrina0">Vetrina 0</label>
    		<input type="checkbox" class="checkbox" value="2" name="vetrina[]" id="vetrina1" /><label for="vetrina1">Vetrina 1</label>
    		<input type="checkbox" class="checkbox" value="3" name="vetrina[]" id="vetrina2" /><label for="vetrina2">Vetrina 2</label>
    		<input type="checkbox" class="checkbox" value="4" name="vetrina[]" id="vetrina3" /><label for="vetrina3">Vetrina 3</label>
    		<input type="checkbox" class="checkbox" value="5" name="vetrina[]" id="vetrina4" /><label for="vetrina4">Vetrina 4</label>
    		<input type="checkbox" class="checkbox" value="6" name="vetrina[]" id="vetrina5" /><label for="vetrina5">Vetrina 5</label>
    		<input type="submit" value="Invia" />
    	</form>
      </body>
    </html>

  5. #5
    anche il mio codice, anche se funzionante, era scazzato (l'ho fatto troppo in velocità ). Decisamente troppi cicli...
    Siccome non mi riesce di editare il messaggio, ecco qui la funzione modificata:

    codice:
    function checkCount() {
    	var limit = 3;	
    	for (var f=0; f<6; f++) {
    		var checkBox = document.getElementById('vetrina'+f);
    		checkBox.onclick = function() {
    			var checkedCount = 0;
    			for (var j=0; j<6; j++) {
    				checkedCount += (document.getElementById('vetrina'+j).checked)? 1 : 0;
    				if (checkedCount>limit) {
    					alert("Hai superato il limite di " + limit + " checkbox selezionate.")
    					this.checked = false;
    					break;
    				}
    			}
    		}
    	}
    }

  6. #6
    In velocità ho sistemato il tuo codice: c'erano un po' di errori, e ti consiglio in ogni caso di mettere sempre il punto e virgola alla fine di ogni istruzione.
    L'ho provato con Firefox e IE8.

    [CODE]
    <!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>Max 3 checkbox selezionate</title>
    <script type="text/javascript">
    function checkCount() {
    var checkGroup = [];
    var limit = 3;
    for (var f=0; f<6; f++){
    checkGroup.push(document.getElementById('vetrina'+ f));
    for (var i=0; i<checkGroup.length; i++){
    checkGroup[i].onclick = function() {
    var checkedCount = 0;
    for (var j=0; j<checkGroup.length; j++) {
    checkedCount += (checkGroup[j].checked)? 1 : 0;
    if (checkedCount>limit) {
    alert("H

  7. #7
    In velocità ho sistemato il tuo codice: c'erano un po' di errori, e ti consiglio in ogni caso di mettere sempre il punto e virgola alla fine di ogni istruzione.
    L'ho provato con Firefox e IE8.

    [CODE]
    <!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>Max 3 checkbox selezionate</title>
    <script type="text/javascript">
    function checkCount() {
    var checkGroup = [];
    var limit = 3;
    for (var f=0; f<6; f++){
    checkGroup.push(document.getElementById('vetrina'+ f));
    for (var i=0; i<checkGroup.length; i++){
    checkGroup[i].onclick = function() {
    var checkedCount = 0;
    for (var j=0; j<checkGroup.length; j++) {
    checkedCount += (checkGroup[j].checked)? 1 : 0;
    if (checkedCount>limit) {
    ale

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    92
    funziona perfettamente, mi hai salvato la vita, ti devo una birra, anche due!!

  9. #9
    Originariamente inviato da lovatos
    funziona perfettamente, mi hai salvato la vita, ti devo una birra, anche due!!
    adoro la birra

    mi sono accorto ora che ho postato erroneamente 2 risposte di troppo

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.