2012-02-07 11 views
20

Hola Tengo un formulario html que estoy enviando mediante el clic en un botón. El evento dispara $ ("# myform"). Submit(); el problema es que hay una casilla de verificación en el formulario y en Firebug debajo de los parámetros publicados que muestra "mycheckbox1 on" en lugar de la esperada "mycheckbox1 true".formulario enviar checkbox establece el valor en "on" en lugar de "true"

al enviar un formulario a través de ajax Puedo establecer los datos que se publican sin problema, pero este formulario tiene una carga de archivo que requiere uno de los varios hacks para que funcione. El que estoy usando finalmente llama submit. pero tal vez eso no es relevante.

En cualquier caso cuando los datos llegan al servidor, el servidor no ve el valor "on" como bool y por lo tanto lo ignora.

Cualquier observación sería muy apreciada.

+2

Qué valor tiene la casilla de verificación? Si no tiene el atributo 'value', solo puede informar' on'. –

+0

Sí, he leído esto, pero extrañamente cuando miro una casilla de verificación con firebug y la reviso y la quito, no muestra ningún valor. Tal vez deba establecer el valor como falso cuando se crea la casilla de verificación o tal vez necesito un controlador de eventos onChange global para controlar manualmente la configuración del valor. – Raif

Respuesta

17

Una casilla marcada simplemente envía su atributo value. Una casilla de verificación no marcada no se envía en el formulario.

Por lo tanto, una prueba simple si se publicó el atributo name de la casilla de verificación puede determinar si se marcó o no.

+0

No sabía que las casillas no marcadas no se enviaron en POST ... ¡he estado tratando de resolver un problema similar durante más de media hora! +1 –

6

Sí, diferentes navegadores pueden manejar las casillas de manera diferente cuando el valor no está establecido.

Puede establecer el atributo de valor de la casilla de verificación explícitamente en "verdadero" como lo entiende su servidor cuando se marca la casilla de verificación y se le envía. Como Alex insinuó en su respuesta, la casilla de verificación no se enviará si no está marcada, entonces, supongo que el servidor dará el valor predeterminado a falso en este caso.

+0

Estaba teniendo un problema similar con Play hasta que agregué explícitamente 'value =" true "' a mi casilla de verificación. – Matthew

Cuestiones relacionadas