【发布时间】:2025-12-17 00:20:05
【问题描述】:
我有一个复选框 $(#myinput),并且基于对其他选项的一些组合的选择,我希望这个复选框被强制为选中或未选中。
但是,如果我使用$(#myinput).prop("disabled", true),那么复选框的值将不会在生成的 POST 请求中提交。由于是复选框,readonly 没有任何作用……也就是说,readonly 不控制输入是否可以通过单击来切换状态更改。
不使用隐藏元素,让$(#myinput) 无法通过用户点击更改的最佳方法是什么,同时确保它被冻结的任何值仍然可以通过任何表单提交/ POST 请求?
我正在寻找仅修改复选框本身的设置,而不是通过隐藏元素增加复杂性。请仅在避免创建隐藏元素时添加答案。
【问题讨论】:
-
提交时可以
enable吗? -
部分问题是 POST 请求也存储了所有 UI 元素的状态,因此如果我在提交时启用,然后有人导航到该示例的配置页面,它将在加载时启用,即使它应该处于禁用
myinput更改的状态(根据选项的组合)。这是一个允许创建复杂配置文件的工具,它们经常被加载、更改、保存、克隆等。 -
更改上述属性将是大量工作(这是一个相当遗留的系统)。例如。它需要各种复杂的加载逻辑来检查加载的任何属性组合的执行条件,所以在那里添加一堆代码。
-
防止点击事件默认?
-
老实说,如果输入的真/假取决于其他人的不同组合,那么您不应该对此进行后端验证吗?如果请求被客户端截获,这里的任何解决方案都不会实际上阻止 POST 的值发生变化。没有多少前端验证可以替代后端验证。我建议您将其保留为“禁用”并在后端设置正确的值
标签: javascript jquery html checkbox readonly-attribute