Подтвердить что ты не робот

Сообщение jQuery формы преобразует логические флажки в "on" и "off"?

У меня довольно простая форма с флажком, и я заметил, что мои значения флажка не были отобраны на моем приложении на стороне сервера:

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

Все остальное верно, но я вижу в Firebug, что он сериализует значение флажка как "on" или "off" вместо "true" и "false", которое я получаю с обычным <form method="post" action="formpage">... Что происходит здесь, это ожидаемое поведение? Мое связующее устройство на стороне сервера не приравнивает "on" к "true" и, таким образом, снижает значение. Очевидно, я мог бы изменить привязку к модели, но хотел удостовериться, что я не ошибаюсь.

Edit:

Здесь моя разметка:

<input type="checkbox" name="CheckboxValue" >

jQuery версия 1.4.4

В Firebug здесь появляется сообщение:

... other variables &CheckboxValue=on
4b9b3361

Ответ 1

Проблема в том, что ваши флажки не имеют атрибутов value. Когда jQuery сериализует форму, она использует 'on' как значение по умолчанию.

Вы должны указать свой флажок:

<input type="checkbox" name="CheckboxValue" value="true" />

См. пример здесь: http://jsfiddle.net/U6Sbw/1/

Ответ 2

Немного поздно, но на всякий случай кто-то наткнулся на это: если вы также хотите, чтобы значения false выводились, этот плагин jQuery предоставляет возможность всегда игнорировать флажок "значение" и вместо этого сериализовать это как "true" или "false":

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

Ответ 3

Вот что я сделал, который, кажется, отлично работает. Я использую js2form для переключения на контроллер mvc/jackson.

У меня есть функция, которую я запускаю со следующим:

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