禁用的表单字段不提交数据[重复]

Posted

技术标签:

【中文标题】禁用的表单字段不提交数据[重复]【英文标题】:Disabled form fields not submitting data [duplicate] 【发布时间】:2012-02-14 02:12:39 【问题描述】:

有没有办法(使用属性标志或类似的东西)启用被禁用的表单字段来提交数据?

或者,如果这不可能,有没有办法阻止使用 css 或任何其他属性编辑字段而不是禁用而不隐藏它们?

我目前的特殊情况是数据集的标识符,它应该以表格形式显示(不可编辑) - 如果没有更好的解决方案,我认为除了禁用的字段之外,我还会使用隐藏字段保留实际值,禁用显示它的值。

【问题讨论】:

为什么不使用“只读”而不是“禁用”? 【参考方案1】:

正如已经提到的:READONLY 不适用于 <input type='checkbox'><select>...</select>

如果您有一个 Form 禁用了复选框/选择并且需要提交它们,您可以使用 jQuery:

$('form').submit(function(e) 
    $(':disabled').each(function(e) 
        $(this).removeAttr('disabled');
    )
);

此代码从提交时的所有元素中删除disabled 属性。

【讨论】:

兄弟...直到完成整个页面,我才意识到这是一个问题。这么多的javascript。然后我移到后端,......他们都没有通过。非常感谢这个答案! 这个脚本简洁而神奇,非常感谢。非常适合在 MVC/Razor 页面中工作 不错的解决方案,我看到的 MVC 最好的解决方案。谢谢。 如果您只想禁用复选框,请将$(':disabled') 更改为$('input[type="checkbox"]:disabled') 或者你也可以简单地添加一个隐藏字段【参考方案2】:

在您想要“禁用”的字段上使用 CSS 指针事件:无(可能与灰色背景一起),以允许 POST 操作,例如:

<input type="text" class="disable">

.disable
pointer-events:none;
background:grey;

参考:https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events

【讨论】:

不推荐使用这个,因为它严重依赖浏览器。【参考方案3】:

我们也可以使用带有以下属性的只读-

readonly onclick='return false;'

这是因为如果我们只使用只读,那么单选按钮将是可编辑的。为避免这种情况,我们可以将 readonly 与上述组合一起使用。它将限制编辑,并且元素的值也将在表单提交期间传递。

【讨论】:

【参考方案4】:

将 CSS 或类添加到在 select 和文本标签中起作用的输入元素,如

style="pointer-events: none;background-color:#E9ECEF"

【讨论】:

以上是关于禁用的表单字段不提交数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止表单重复提交

php通过token验证表单重复提交

如何使用表单验证防止重复提交

提交表单将所有空输入及其关联的隐藏输入字段设置为禁用

防止表单重复提交的解决方案整理

禁用表单提交按钮,而不阻止 HTML5 验证