Le formulaire jQuery convertit les cases booléennes en “activé” et “désactivé”?

J’ai un formulaire assez simple avec une case à cocher, et j’ai remarqué que les valeurs de ma case à cocher n’étaient pas collectées sur mon application côté serveur:

$.post('CreateForm', $('#new-form').serialize(), ... 

Tout le rest est correctement posté, mais je vois dans Firebug qu’il va sérialiser la valeur de la case à cocher comme “on” ou “off” au lieu de “true” et “false” que j’obtiens avec une

normale

… que se passe-t-il ici, s’agit-il du comportement attendu? Mon classeur de modèle côté serveur n’assimile pas “on” à “true” et supprime donc la valeur. Évidemment, je pouvais changer de classeur, mais je voulais m’assurer que je ne le faisais pas mal.

Modifier:

Voici mon balisage:

  

jQuery version 1.4.4

Dans Firebug, voici le post résultant:

 ... other variables &CheckboxValue=on 

Le problème est que vos cases à cocher n’ont pas d’atsortingbuts de value . Lorsque jQuery sérialise le formulaire, il utilise “on” comme valeur par défaut.

Vous devriez donner à votre case à cocher une valeur:

  

Voir exemple ici: http://jsfiddle.net/U6Sbw/1/

Un peu tard, mais juste au cas où quelqu’un tomberait sur ceci: si vous voulez aussi que de fausses valeurs soient émises, ce plugin jQuery fournit l’option d’ignorer toujours la “valeur” de la case à cocher et de le sérialiser en tant que “vrai” ou “faux”:

http://tdanemar.wordpress.com/2010/08/24/jquery-serialize-method-and-checkboxes/

Voici ce que j’ai fait et qui semble bien fonctionner. Suis js2form pour marshall sping mvc / jackson controller.

Avoir une fonction que je lance avec ce qui suit:

 $('input[type=checkbox]').unbind('click.checks').bind('click.checks', function(e){ $(this).val($(this).is(':checked')); });