2

所以我正在使用 MVC3 生成一个 textarea 元素。我使用以下标记生成我的元素:

<%=Html.TextAreaFor(model=> model.Description, new { value=Model.Description, @class="readonlyDescription", placeholder = "No " + Model.DescriptionLabel.ToLower() + " provided", @readonly = "readonly", rows = 1, cols = 30}) %>

在 Google Chrome 下生成时,我看到:

<textarea class="readonlyDescription" cols="30" id="Description" name="Description" placeholder="No description provided" readonly="readonly" rows="1" value=""></textarea>

在 IE9 下生成时,我看到:

<textarea name="Description" class="readonlyDescription" id="Description" rows="1" cols="30" readOnly="readonly" value="" placeholder="No description provided">

在 IE8 下生成时,我看到:

<textarea name="Description" class="readonlyDescription placeholder" id="Description" rows="1" cols="30" readOnly="" value="" placeholder="No description provided" jQuery172027049094255782585="250">

请注意,我的 readonly 属性已丢失。它去哪儿了?

我也尝试过使用 @readonly = "true" 但没有看到任何不同的效果。

编辑:我怀疑它正在发生,但 IE8 只是将“只读”的存在视为足以启用它。然后,它处理只读的方式与 IE9 不同。因此,我使用 disabled 而不是 readonly 以及使背景透明的附加 CSS(看起来是 readonly 而不是 disabled)

4

1 回答 1

1

readonly 只有一个值,即 readonly,因此 readonly 属性的存在足以将其呈现为只读是有效的。

禁用相同,只需属性的存在就足够了

在 JS 中,要启用或使控件可编辑,您需要删除这些属性,而不是将它们设置为 true 或 false。

W3Schools 对此有话要说

于 2012-12-19T13:13:14.577 回答