Tengo un formulario bastante simple con una casilla de verificación, y noté que los valores de mi casilla de verificación no se recogían en mi aplicación del lado del servidor:
$.post('CreateForm', $('#new-form').serialize(), ... Todo lo demás se publica correctamente, pero estoy viendo en Firebug que serializará el valor de la casilla de verificación como "activado" o "desactivado" en lugar de "verdadero" y "falso" que obtengo con un <form method="post" action="formpage"> normal <form method="post" action="formpage"> ... ¿qué está pasando aquí? ¿Es este el comportamiento esperado? Mi carpeta de modelos del lado del servidor no equivale a "encendido" con "verdadero" y, por lo tanto, reduce el valor. Obviamente, podría cambiar la carpeta del modelo, pero quería asegurarme de que no lo estaba haciendo mal.
Editar:
Aquí está mi marcado:
<input type="checkbox" name="CheckboxValue" >jQuery versión 1.4.4
En Firebug aquí está la publicación resultante:
... other variables &CheckboxValue=onEl problema es que sus casillas de verificación no tienen atributos de value . Cuando jQuery serializa el formulario, usa 'on' como valor predeterminado.
Debes darle a tu checkbox un valor:
<input type="checkbox" name="CheckboxValue" value="true" />Ver ejemplo aquí: http://jsfiddle.net/U6Sbw/1/
Un poco tarde, pero en caso de que alguien tropiece con esto: si también desea que se generen valores falsos , este complemento de jQuery brinda la opción de ignorar siempre el "valor" de la casilla de verificación y, en su lugar, serializarlo como "verdadero" o "falso":
http://tdanemar.wordpress.com/2010/08/24/jquery-serialize-method-and-checkboxes/
Esto es lo que hice, que parece funcionar muy bien. Estoy usando js2form para marshall a sping controlador mvc/jackson.
Tengo una función que ejecuto con lo siguiente:
$('input[type=checkbox]').unbind('click.checks').bind('click.checks', function(e){ $(this).val($(this).is(':checked')); });