我有两页HTML表单。第一页有一个提交表单,第二页有一个确认表单。第一个表单提供了许多控件的选择,而第二个页面再次显示来自提交表单的数据,并显示确认消息。在第二种形式中,所有字段必须是静态的。
从我所看到的,一些表单控件可以是只读的,所有控件都可以被禁用,区别在于你仍然可以选择一个只读字段。
而不是按字段做这个是否有任何方法标记整个表单为只读/禁用/静态,这样用户就不能改变任何控件?
我有两页HTML表单。第一页有一个提交表单,第二页有一个确认表单。第一个表单提供了许多控件的选择,而第二个页面再次显示来自提交表单的数据,并显示确认消息。在第二种形式中,所有字段必须是静态的。
从我所看到的,一些表单控件可以是只读的,所有控件都可以被禁用,区别在于你仍然可以选择一个只读字段。
而不是按字段做这个是否有任何方法标记整个表单为只读/禁用/静态,这样用户就不能改变任何控件?
当前回答
你可以在表单上使用一个不透明的图层:
放置位置:相对于表格 添加透明块div作为这个表单的子元素,position: absolute,并且上、下、左、右等于0
其他回答
没有完全兼容的、官方的HTML方法来做到这一点,但一点javascript就可以大有帮助。 您将遇到的另一个问题是,禁用的字段不会显示在POST数据中
没有内置的方法,我知道这样做,所以你需要提出一个自定义解决方案,取决于你的表单有多复杂。你应该读读这篇文章:
将HTML表单转换为只读(更新:损坏的文章链接,存档链接)
EDIT: Based on your update, why are you so worried about having it read-only? You can do it via client-side but if not you will have to add the required tag to each control or convert the data and display it as raw text with no controls. If you are trying to make it read-only so that the next post will be unmodified then you have a problem because anyone can mess with the post to produce whatever they want so when you do in fact finally receive the data you better be checking it again to make sure it is valid.
你可以使用这个函数禁用表单:
function disableForm(formID){
$('#' + formID).children(':input').attr('disabled', 'disabled');
}
点击这里查看工作演示
注意,它使用jQuery。
将所有表单id编号,并在JS中运行for循环。
for(id = 0; id<NUM_ELEMENTS; id++)
document.getElementById(id).disabled = false;
简单的方法
$('#yourform .YOUR_CLASS_FOR_INPUTS').prop('readonly', true);