Сообщение 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
Ответы
Ответ 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'));
});