2013-07-23 15 views

risposta

20

Sì. Puoi farlo con l'aggiunta di un ingresso nascosto con lo stesso nome di casella di controllo il cui valore sarà presentato se non sia spuntata:

<input type="hidden" name="option" value="false"/> 
<input type="checkbox" name="option" value="true"/> 

essa presenterà entrambi i valori, se casella è selezionata. Ma il lato server leggerà l'ultimo (valore della casella di controllo)

+1

Se si dispone di molte caselle di controllo, questo metodo può risultare poco pratico. Ecco un approccio migliore: http://stackoverflow.com/a/7108685/399435 –

+0

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

+0

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. –

0

Il valore di un controllo di modulo è sempre una stringa. È possibile utilizzare i pulsanti di opzione per ottenere valori diversi per lo stesso nome di controllo:

<form ...> 
    <input type="radio" name="whatever" value="true">true 
    <br> 
    <input type="radio" name="whatever" value="false">false 
    ... 
</form> 

Solo uno può essere controllato, e solo il nome/valore selezionato verrà inviato al server.

0
<input type="checkbox" name="check1" value="true" id="check1"> 

basta impostare il valore

+1

non verrà aggiornato se selezioniamo/deselezioniamo la casella di controllo e abbiamo bisogno di più js per funzionare – behz4d

0

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

0

È possibile aggiungere una nuova classe per le caselle di controllo e impostare il valore quando si fa clic.

<input class="checkbox" id="someId" type="checkbox" value="false" />Checkbox 

E utilizzare un piccolo aiuto JQuery

$('.checkbox').click(function() { 
    $(this).val() == "false" ? $(this).val("true") : $(this).val("false"); 
}); 

allora si sarà in grado di ottenere il valore della casella di controllo o serializzare un modulo.

Problemi correlati