我有两页HTML表单。第一页有一个提交表单,第二页有一个确认表单。第一个表单提供了许多控件的选择,而第二个页面再次显示来自提交表单的数据,并显示确认消息。在第二种形式中,所有字段必须是静态的。

从我所看到的,一些表单控件可以是只读的,所有控件都可以被禁用,区别在于你仍然可以选择一个只读字段。

而不是按字段做这个是否有任何方法标记整个表单为只读/禁用/静态,这样用户就不能改变任何控件?


当前回答

要在angular中有条件地禁用整个fieldset,你可以这样做:

 <fieldset [attr.disabled]="isEditable ? null : 'disabled'">

其他回答

我宁愿使用jQuery:

$('#'+formID).find(':input').attr('disabled', 'disabled');

Find()将比children()深入到第n个嵌套子,children()只查找直接子。

将所有表单id编号,并在JS中运行for循环。

 for(id = 0; id<NUM_ELEMENTS; id++)
   document.getElementById(id).disabled = false; 

这是禁用指定元素中的所有输入、文本区域、选择和按钮的理想解决方案。

对于jQuery 1.6及以上版本:

// To fully disable elements
$('#myForm :input').prop('disabled', true); 

Or

// To make elements readonly
$('#myForm :input').prop('readonly', true); 

jQuery 1.5及以下版本:

$('#myForm :input').prop('disabled', 'disabled');

And

$('#myForm :input').prop('readonly', 'readonly');

没有完全兼容的、官方的HTML方法来做到这一点,但一点javascript就可以大有帮助。 您将遇到的另一个问题是,禁用的字段不会显示在POST数据中

<form inert>

这不会改变表单的样式,但会阻止所有输入的可聚焦性和任何按钮的可点击性。