2012-02-07 3 views
20

Ciao Ho un modulo html che sto inviando tramite l'evento click su un pulsante. L'evento spara $ ("# myform"). Submit(); il problema è che c'è una casella di controllo sul modulo e in firebug sotto i parametri pubblicati mostra "mycheckbox1 on" piuttosto che l'atteso "mycheckbox1 true".modulo invio casella di controllo imposta valore su "on" anziché su "true"

quando si invia un modulo tramite ajax posso impostare i dati che viene inviato nessun problema, ma questo modulo ha un caricamento di file che richiede uno dei vari hack per farlo funzionare. Quello che sto usando alla fine chiama submit. ma forse non è rilevante.

In ogni caso quando i dati arrivano sul server, il server non vede il valore "on" come un bool e quindi lo ignora.

Qualsiasi intuizione sarebbe molto apprezzata.

+2

Quale valore ha la casella di controllo? Se non ha attributo 'value', può solo riportare' on'. –

+0

Sì, ho letto questo, ma stranamente quando guardo una casella di controllo con firebug e controllo e deseleziono non mostra un valore. Forse ho bisogno di impostare il valore come falso quando viene creata la casella di controllo o forse ho bisogno di un gestore di eventi onChange globale per gestire manualmente l'impostazione del valore. – Raif

risposta

17

Una casella di controllo selezionata invia semplicemente l'attributo value. Una casella di controllo deselezionata non si invia nel modulo.

Pertanto, un semplice test se l'attributo name è stato registrato può determinare se è stato controllato o meno.

+0

Non sapevo che le caselle di controllo deselezionate non venivano inviate nel POST ... cercavo di capire un problema simile per oltre mezz'ora! +1 –

6

Sì, diversi browser potrebbero gestire le caselle di controllo in modo diverso quando il valore non è impostato.

È possibile impostare l'attributo value della casella di controllo esplicitamente su "true" come il server lo riconosce quando la casella di controllo è selezionata e viene inviata ad essa. Come Alex ha accennato nella sua risposta, la casella di controllo non verrà inviata se è deselezionata, quindi, presumo che il server verrà impostato su false in questo caso.

+0

Stavo avendo un problema simile con Play fino a quando ho aggiunto esplicitamente 'value =" true "' alla mia casella di controllo. – Matthew