当前位置: 首页 > 知识库问答 >
问题:

使html复选框在序列化中发送true/false

颜志业
2023-03-14

我在表单中有以下复选框:

<input type="checkbox" name="preparationNeeded" >
.ajax({
                        type : 'POST',
                        url : '${home}ui' + action + name + '.html',
                        data : $('#updateform').serialize(),
                        success : function(data) {
                            console.log("SUCCESS: ", data);
                            document.getElementById('viewmodal').style.display = 'none';
                            display(data);
                        },
                        error : function(e) {
                            console.log("ERROR: ", e);
                            displayError(e.responseText);
                        }
                    });

序列化如下:

选中时:

FORM:  id=1& ... preparationNeeded=true ...

未选中时(不包括复选框值):

FORM:  id=1& ... 
FORM:  id=1& ... preparationNeeded=false&preparationNeeded=true ...
Field error in object 'item' on field 'preparationNeeded': rejected value [false,true]; codes [typeMismatch.item.preparationNeeded,typeMismatch.preparationNeeded,typeMismatch.boolean,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.preparationNeeded,preparationNeeded]; arguments []; default message [preparationNeeded]]; default message [Failed to convert property value of type [java.lang.String[]] to required type [boolean] for property 'preparationNeeded'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [false,true]]

Bacause值为“false,true”

有什么建议吗?谢了!

共有1个答案

冯元魁
2023-03-14

一个选项是观察对复选框的单击,当复选框被选中时,清除隐藏输入上的名称。这样,只有在未选中复选框时,隐藏的输入值才会添加到序列化输出中。

请参见下面的演示:

$(document).ready(function() {
  $('#serialize').click(serializeForm);
  $('#preparationNeededCheckbox').click(handleCheckboxClick);
});

function serializeForm() {
  console.log('serialized form: ',$('#updateform').serialize());
}

function handleCheckboxClick() {
  $('#hiddenCheckboxInput').attr('name', this.checked ? '' : this.name);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="updateform">
  Needs Preparation: <input type="checkbox" name="preparationNeeded" value="true" id="preparationNeededCheckbox" />
  <input type="hidden" name="preparationNeeded" value="false" id="hiddenCheckboxInput" />
</form>
<button id="serialize">Serialize</button>
 类似资料:
  • 问题内容: 我有一堆默认情况下处于选中状态的复选框。我的用户可能会取消选中某些复选框(如果有),而其余复选框保持选中状态。 有没有什么办法让表单POST所复选框 不 检查,而不是的那些 被 选中? 问题答案: 为具有不同ID的复选框添加隐藏的输入: 提交表单之前,请根据检查的条件禁用隐藏的输入:

  • 问题内容: 那么,如何只允许用户选择一个复选框呢? 我知道单选按钮是“理想的”,但出于我的目的……不是。 我有一个字段,用户需要选择两个选项中的一个或两个,但不能两个都选。问题是我还需要我的用户也可以取消选择他们的选项,这是单选按钮失败的地方,因为一旦选择了组,就必须选择一个选项。 我将通过php验证信息,但是我仍然想将用户限制在一个答案,如果他们想给它的话。 问题答案: 该代码段将: 允许像单选

  • 我如何从html中的复选框接收true或false,并将Thymeleaf传送到我的控制器,这样我就可以接收true或false的值并保存在我的数据库中。到目前为止,我收到以下错误: 我的html如下所示: 和我的控制器: 更新#1 所以我只是尝试从html中移动第二个th:字段,所以它看起来像这样:

  • 问题内容: 将单选按钮/复选框与文本正确对齐的最干净方法是什么?到目前为止,我一直使用的唯一可靠的解决方案是基于表的: 有些人可能会对此表示不满。我刚刚花了一些时间(再次)研究无表解决方案,但失败了。我尝试了浮动,绝对/相对定位和类似方法的各种组合。它们不仅主要默默地依赖于单选按钮/复选框的估计高度,而且在不同的浏览器中的行为也有所不同。理想情况下,我想找到一种不假设大小或浏览器特殊问题的解决方案

  • app.py reg_account.html 错误: 我想让的结果在中的复选框未选中时返回False,但我不明白为什么当我勾选了该复选框时,结果可以存储到数据库中?我试着调试了几次,但还是找不到一个可能的解决方案,所以有没有人可以帮忙?