选中框时复选框值不会更改

Posted

技术标签:

【中文标题】选中框时复选框值不会更改【英文标题】:checkbox value doesn't change when box is checked 【发布时间】:2012-03-01 00:18:57 【问题描述】:

在form submit checkbox sets value to "on" rather than "true" 中,我解释了如何在提交表单后,我的复选框值被提交为“on”而不是 true。

建议是我需要设置 value 属性才能将其返回为 true。因此,我将页面上复选框上的值设置为 true 或 false,具体取决于它是新项目还是数据库中的值。但是,当我单击复选框时,萤火虫显示该值没有改变。那么这应该如何工作呢?

更新一些细节

好的,当然,情况并不像上面解释的那么简单。发布表单时,我使用 jquery.form。它的作用是查看所有输入,获取值并将它们放入一个对象中,然后在 ajax 调用中将其发布到服务器。

但是,当您的表单上有文件上传时,jquery.form 所做的是它通过创建 iframe 并做一些魔术来处理文件上传(这是处理 fileupload 所必需的),然后它调用 $(form) 。提交();

正是在这种情况下,我不是通过 ajax 而是通过 $.submit() 提交,我得到了“on”的序列化值而不是 true。我查看了 jquery.submit 的代码,但我并没有真正看到它在做什么。 更新经过进一步考虑,我猜它所做的只是触发表单提交,就像按钮类型为 submit 所做的那样。

【问题讨论】:

您能否发布代码,说明您如何选择该复选框以获得“on”值。我之前在使用 jQuery 时遇到过这种情况,可能会有所帮助。 【参考方案1】:

这是一个Stack Overflow post,专门讨论这个问题。如果复选框值未设置为“true”或“false”,则 jQuery 似乎使用“on”。

【讨论】:

感谢您的回答,但是,我没有手动获取值,我在表单上调用提交。然后表单查看所有元素的值(我不太了解那部分。似乎很神奇,如果我可以利用它,我可以发送正确的值)并返回这些值的参数。如果我没有将复选框上的值 attr 设置为 true 或 false,它会返回“on”,然后服务器不会将其识别为 bool。

以上是关于选中框时复选框值不会更改的主要内容,如果未能解决你的问题,请参考以下文章

加载脚本时如何在jquery中选中一个框时更改背景

选中多选框时改变相对应的包裹复选框的元素样式

当我选中/取消选中复选框时 Cookie 值更改

复选框值不能基于选中或使用jquery取消选中来更改[重复]

JQuery 正在更改复选框值,但复选框未显示为选中状态

MatCheckbox preventDefault()和event.checked值