Salve,
ho scritto un codice per limitare le selezioni di input checkbox a 2 disabilitando in automatico tutte le altre + il bottone x l'invio del form.
Inoltre quando si seleziona un checkbox viene aggiunta una classe per cambiare il background della riga all'interno della tabella.
Ora...funziona tutto però.... dato che secondo me è scritto molto male vorrei sapere se potete aiutarmi ad ottimizzare il codice riscrivendolo d'accapo in più mi servirebbe inoltre che vengano passato i due valori dei checkbox selezionati in 2 campi hidden.
---> FOGLI DI STILE (inserisco solo la classe che modifica il background della riga)
---> CODICE JAVASCRIPTcodice:.selected { background-color: #E0EFF7; }
codice:<script type="text/javascript"> /* Highlight Row */ function highlight(id, currentClass, checkboxId) { var checkbox_element = document.getElementById(checkboxId); var row_element = document.getElementById(id); var lista_check = document.getElementsByTagName("input"); var conta = 0; row_element.className = checkbox_element.checked ? 'selected' : currentClass; for(i = 0; i < lista_check.length; i++){ if(lista_check.item(i).getAttribute("type") == "checkbox" && lista_check.item(i).checked == true){ conta++; } } if (conta == 2) { document.getElementById('submit').disabled=false; for(i = 0; i < lista_check.length; i++){ if(lista_check.item(i).getAttribute("type") == "checkbox" && lista_check.item(i).checked == false){ lista_check.item(i).disabled = true; } } } if (conta < 2) { document.getElementById('submit').disabled=true; for(i = 0; i < lista_check.length; i++){ if(lista_check.item(i).getAttribute("type") == "checkbox" && lista_check.item(i).checked == false){ lista_check.item(i).disabled = false; } } } if(conta > 2){ document.getElementById(checkboxId).checked = false; } } </script>
--> FORM il campo $item->id viene generato con un ciclo foreach dove estrapola il valore da un database (inserisco solo alcune righe)
codice:<form action="/confronta/?" method="get" name="mioform" accept-charset="utf-8"> <input type="hidden" name="valore1" value=""> <input type="hidden" name="valore2" value=""> <tr id="tr<?php echo "$item->id"; ?>" class="tr_class"> <td class='num'><input id="<?php echo "$item->id"; ?>" type="checkbox" class="" value="<?php echo "$item->id"; ?>" onClick="JavaScript: highlight('tr<?php echo "$item->id"; ?>', '<?php echo $item->class ?>', this.id);"></td> <td class='num'><input id="<?php echo "$item->id"; ?>" type="checkbox" class="" value="<?php echo "$item->id"; ?>" onClick="JavaScript: highlight('tr<?php echo "$item->id"; ?>', '<?php echo $item->class ?>', this.id);"></td> <td class='num'><input id="<?php echo "$item->id"; ?>" type="checkbox" class="" value="<?php echo "$item->id"; ?>" onClick="JavaScript: highlight('tr<?php echo "$item->id"; ?>', '<?php echo $item->class ?>', this.id);"></td> <td class='num'><input id="<?php echo "$item->id"; ?>" type="checkbox" class="" value="<?php echo "$item->id"; ?>" onClick="JavaScript: highlight('tr<?php echo "$item->id"; ?>', '<?php echo $item->class ?>', this.id);"></td> </tr> <input type="submit" id="submit" value="Confronta" disabled> </form>
Funziona tutto ma come ho detto prima vorrei sapere se è possibile scrivere un codice migliore e in piu passare i due valori nei 2 campi hidden.
Spero che qualcuno sappia aiutarmi.
Grazie!!


Rispondi quotando