[英]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.