Se abbiamo più checkboxed nella nostra pagina, come:
<input id="reminder" name="Check1" value="false" type="checkbox" />
<input id="alarm" name="Check2" value="false" type="checkbox" />
dobbiamo legare l'evento di modifica di queste caselle e impostarne il valore true o false .
$('input[type=checkbox]').on('change', function(){
var name = $(this).attr('name');
if($(this).is(':checked')){
$('input[name= "' +name +'"]').val(true);
$(this).val(true);
}
else{
$(this).val(false);
$('input[name= "' +name +'"]').val(false);
}
});
Per impostazione predefinita, il valore casella di controllo non viene visualizzato nella $ ('forma'). SerializeArray(), appare quando è selezionata.
dobbiamo tenere un campo nascosto per ogni casella di controllo come:
<input type="hidden" value="false" name="Check1" />
<input type="hidden" value="false" name="Check2" />
Ora, quando si serializzare il form ora, si ottiene il valore corretto come: Check1 = true Check2 = false
Se si dispone di molte caselle di controllo, questo metodo può risultare poco pratico. Ecco un approccio migliore: http://stackoverflow.com/a/7108685/399435 –
Assolutamente in disaccordo con te @KarthicRaghupathi. Se il JS personalizzato multilinea con logica non trasparente sembra 'più maneggevole' per te, fallo. La domanda originale riguardava i valori binari, non multipli. Per me - due linee di codice html sono una soluzione molto più elegante. – roody
l'altro approccio è anche per i valori binari. Solo si occupa di tutte le caselle di controllo nel modulo. Ho dovuto trattare con 20 caselle di controllo in una forma. Il tuo approccio significa 40 tag di input rispetto a poche righe di JS. –