诀窍是拦截表单发布并将复选框更改为隐藏的输入字段。
示例:普通提交
$('form').on("submit", function (e) {
var $checkboxes = $(this).find('input[type=checkbox]');
$checkboxes.each(function() {
if ($(this)[0].checked) {
$(this).attr('type', 'hidden');
$(this).val(1);
} else {
$(this).attr('type', 'hidden');
$(this).val(0);
}
});
});
示例:AJAX
如果要通过ajax发布表单以不更新UI,则需要跳几圈。
$('form').on("submit", function (e) {
e.preventDefault();
var $form = $('form').clone();
var $checkboxes = $form.find('input[type=checkbox]');
$checkboxes.each(function() {
if ($(this)[0].checked) {
$(this).attr('type', 'hidden');
$(this).val(1);
} else {
$(this).attr('type', 'hidden');
$(this).val(0);
}
});
$.post("/your/path", $form.serialize());
<input type="checkbox" id="event_allDay" name="event_allDay" class="checkbox" checked="checked" Value="On" /><input type="hidden" name="event_allDay" Value="Off" />这样,如果不选中它,它将采用隐藏的值