<form>
<input type="checkbox" key="1"/>
<input type="hidden" name="checked[1]" value="false">
<input type="checkbox" key="2"/>
<input type="hidden" name="checked[2]" value="false">
<input type="checkbox" key="3"/>
<input type="hidden" name="checked[3]" value="false">
<input type="checkbox" key="4"/>
<input type="hidden" name="checked[4]" value="false">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('[key]').change(function() {
var key = $(this).attr('key');
$($('[name="checked[' + key + ']"]')).val($(this).is(':checked') ? 'true' : 'false');
});
});
</script>
qui è quello che sto facendo
sto utilizzando due ingressi uno è casella di controllo senza il nome in modo che non sarà inviato a php , l'altro è nascosto non verrà mostrato all'utente ma è quello che verrà inviato a php
quindi con jquery quando l'utente controlla la casella jquery cambia il valore dell'ingresso nascosto su true e quando deseleziona cambia il valore su false
modo che il valore sarà sempre inviare al PHP con valore vero o falso come string
è possibile modificare il valore che si desidera inviare a PHP modificando questa .is(':checked')?'true':'false')
a qualcosa di simile che .is(':checked')?1:0)
per inviare 1 e 0 invece di vero e falso
un'altra soluzione è la soluzione rybo111
<input type="hidden" name="check" value="false">
<input type="checkbox" name="check" value="true">
invierà le due opzioni, ma se la casella è selezionata i t sovrascriverà la prima opzione
ma non è affidabile al 100% e che invierà più dati al server
Per saperne di più che nel POSTing Form Fields with same Name Attribute
quindi se si desidera utilizzare una soluzione semplice, senza js utilizzare il "html unico" se si desidera che il 100% soluzione affidabile utilizzare il "js"
non è possibile farlo con html in modo da avere 2 opzione 1 utilizzare javascript, 2 utilizzare elenco a discesa invece di casella di controllo – robert
perché non aggiungere questo al tuo php: $ checked = isset (_POST ['checked'])) && _POST ['checked'] == 1; – sabkaraja
@robert Ho sospettato tanto, un elenco a discesa non è un'alternativa in questo caso, ma sono più quindi aperto a una soluzione basata su JS. Come faccio a fare questo con JS? (Ho un'esperienza molto limitata con JS) – Gurgy