
Ci stavamo ragionando insieme ad un mio amico fino ad un'ora fa e siamo arrivati a questo punto.
codice:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jquery box</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
var quanti = 4; // quanti checkbox abilitare (tranne quello selezionato!)
var quanti_primadopo = quanti / 2;
var selezionati = 0;
$(".box").each(function(i){
$(this).live('click', function(){
if($('input:checkbox').is(':checked') && selezionati<1){
selezionati++
$('input:checkbox').not(':checked').attr("disabled",true) // disabilita tutti i checkbox
$(this).removeAttr("disabled") // abilita il checkbox corrente
// scorre i precedenti
overflow = 0;
curcheck = $(this);
for (k=0; k < quanti_primadopo; k++){
curcheck = curcheck.prev();
if (curcheck.length)
curcheck.removeAttr("disabled");
else
overflow++;
}
// scorre i successivi
overflow2 = 0;
curcheck = $(this);
for (k=0; k < quanti_primadopo + overflow; k++){
curcheck = curcheck.next();
if (curcheck.length)
curcheck.removeAttr("disabled")
else
overflow2++;
}
if (overflow2){
// scorre nuovamente i precedenti
overflow = 0;
curcheck = $(this);
for (k=0; k < quanti_primadopo + overflow2; k++){
curcheck = curcheck.prev();
if (curcheck.length)
curcheck.removeAttr("disabled");
else
overflow++;
}
}
}else if($('input:checkbox:checked').length==0){
$('input:checkbox').removeAttr("disabled") // abilita tutti i checkbox
selezionati=0
}
})
})
});
</script>
</head>
<body>
1<input name="uno" class="box" id="uno" type="checkbox" value="">
2<input class="box" name="due" id="due" type="checkbox" value="">
3<input class="box" name="tre" id="tre" type="checkbox" value="">
4<input class="box" name="quattro" id="quattro" type="checkbox" value="">
5<input class="box" name="cinque" id="cinque" type="checkbox" value="">
6<input class="box" name="sei" id="sei" type="checkbox" value="">
7<input class="box" name="sette" id="sette" type="checkbox" value="">
8<input class="box" name="otto" id="otto" type="checkbox" value="">
9<input class="box" name="nove" id="nove" type="checkbox" value="">
</body>
</html>
Appi pazienza se posto il codice ma non sapevo dove uppare il file.
In pratica è come il tuo "Versione box adiacenti, ma il primo e l'ultimo si possono spuntare 2 e 3 o 5 e 6 "
Lo posto qua per far vedere implementazioni diverse risultati uguali.
Grazie!!!!
p.s.
Visto che è stimolante come problema oggi abbiamo trovato un'altra piccola aggiunta da inserire che sarebbe proprio la ciliegina sulla torta.
I box selezionati non devono avere vuoti gli uni rispetto agli altri.
Cioè alla fine non posso avere selezionato 1, 3, 4, 5 saltando il 2 (è un esempio per far capire).
Noi ci ragioniamo, vediamo che viene fuori