繁体   English   中英

从表单中删除“禁用”属性并重新启用

[英]Remove 'disabled' property from Form and re-enable

我有一个包含一些输入的表单,其中一些输入被禁用。 因为它们被禁用,所以它们不会提交其中包含的数据。 所以我使用以下 jQuery 代码来删除提交时disabled属性。

jQuery(function ($) {        
    $('form').bind('submit', function () {
        $(this).find(':input').prop('disabled', false);
    });
});

当用户单击提交按钮时, disabled属性被删除,这些字段中的数据被发送,并下载一个文件(我使用标题,所以用户在同一页面上)。 但是,由于现在已删除disabled属性,用户可以修改这些字段并使用他们自己的数据重新提交表单,这是我不想要的。

我的问题是,一旦提交表单,我该如何修改我的代码以重新禁用这些特定字段。

您可能正在寻找readonly而不是disabled (并且没有 jQuery):

<input type="text" name="readOnlyValue" value="666" readonly="readonly" />

此主题已被不同地提出并在此处详细回答 简而言之:

  • disabled阻止焦点并阻止发送数据
  • readonly允许焦点但阻止修改并允许发送数据

不过要小心,因为用户很容易通过入侵页面来更改input的值。 所以你应该准备好在服务器端处理恶意用户。

我找到了一个解决方法。

我没有将每个输入设置为disabled ,而是将它们设置为readonly但为了使其具有与disabled字段相同的样式,我添加了以下 CSS

input:read-only {
    background-color: #EBEBE4;
    color: #545454;
    border-style: hidden;
    padding: 3px;
}

jsFiddle展示两者区别的示例

直接回答您的问题:如果您使用异步 xmlhttprequest 提交表单,则可以在回调函数中重新禁用您的按钮。

但是,我认为最简单的解决方案是再次将数据添加为 type="hidden" ,如下所示:

<input type="text" value="samedata" disabled>
<input type="hidden" name="actualnamedfield" value="samedata">

只有第一个是可见的,只有第二个被提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM