【发布时间】:2011-12-05 13:15:52
【问题描述】:
我已经阅读了一些关于此的内容,但我似乎找不到任何关于不同浏览器如何处理事物的可靠信息。
【问题讨论】:
-
相关:“如何模拟选择标签的只读属性,并且仍然获取 POST 数据?” stackoverflow.com/questions/368813/…
标签: html cross-browser
我已经阅读了一些关于此的内容,但我似乎找不到任何关于不同浏览器如何处理事物的可靠信息。
【问题讨论】:
标签: html cross-browser
如果在清除(重置)表单时需要保留禁用文本框的值,则必须使用disabled = "disabled",因为只读文本框不会保留该值
例如:
HTML
文本框
<input type="text" id="disabledText" name="randombox" value="demo" disabled="disabled" />
重置按钮
<button type="reset" id="clearButton">Clear</button>
在上面的示例中,当按下清除按钮时,禁用的文本值将保留在表单中。 input type = "text" readonly="readonly"的情况下不会保留值
【讨论】:
readonly 元素是不可编辑的,但会在相应的 form 提交时发送。 disabled 元素不可编辑,也不会在提交时发送。另一个区别是readonly 元素可以聚焦(并且在通过表单“切换”时获得聚焦)而disabled 元素不能。
在this great article 或the definition by w3c 中了解更多信息。引用重要部分:
主要区别
禁用属性
- 禁用的表单元素的值不会传递给处理器方法。 W3C 称这是一个成功的元素。(这类似于 形成未选中的复选框。)
- 某些浏览器可能会覆盖或为禁用的表单元素提供默认样式。 (灰色或浮雕文本) Internet Explorer 5.5 对此特别讨厌。
- 禁用的表单元素不会获得焦点。
- 在标签导航中跳过禁用的表单元素。
只读属性
- 并非所有表单元素都具有只读属性。最值得注意的是,
<SELECT>、<OPTION>和<BUTTON>元素没有 readonly 属性(尽管它们都有禁用的属性)- 浏览器不提供表单元素为只读的默认覆盖视觉反馈。 (这可能是个问题……见下文。)
- 带有只读属性集的表单元素将被传递给表单处理器。
- 只读表单元素可以接收焦点
- 只读表单元素包含在选项卡式导航中。
【讨论】:
disabled 暗示 readonly 但readonly 并不暗示disabled。换句话说,如果一个元素具有disabled 属性,那么就不需要同时包含readonly 属性。对吗?
当元素具有禁用属性时,不会触发任何事件。
以下都不会被触发。
$("[disabled]").click( function(){ console.log("clicked") });//No Impact
$("[disabled]").hover( function(){ console.log("hovered") });//No Impact
$("[disabled]").dblclick( function(){ console.log("double clicked") });//No Impact
而 readonly 将被触发。
$("[readonly]").click( function(){ console.log("clicked") });//log - clicked
$("[readonly]").hover( function(){ console.log("hovered") });//log - hovered
$("[readonly]").dblclick( function(){ console.log("double clicked") });//log - double clicked
【讨论】:
与其他答案相同(disabled 不会发送到服务器,readonly 是),但某些浏览器会阻止突出显示已禁用的表单,而 read-only 仍然可以突出显示(和复制)。
http://www.w3schools.com/tags/att_input_disabled.asp
http://www.w3schools.com/tags/att_input_readonly.asp
无法修改只读字段。但是,用户可以选择它、突出显示它并从中复制文本。
【讨论】:
禁用意味着在提交表单时不会提交来自该表单元素的任何数据。只读意味着元素内的任何数据都将被提交,但用户不能更改。
例如:
<input type="text" name="yourname" value="Bob" readonly="readonly" />
这将为元素“yourname”提交值“Bob”。
<input type="text" name="yourname" value="Bob" disabled="disabled" />
这不会为元素“yourname”提交任何内容。
【讨论】:
readonly 和 disabled 都是布尔值。使用disabled 而不是disabled="disabled"(只读相同)
attrname="attrname"。无论哪种方式,它似乎都不是特别有据可查,至少不是我能找到的。嗯,有这个 - w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2 - 但它只特别提到了 SGML 和 HTML,而不是 XHTML.... 缩略词太多:S
Boolean attributes may legally take a single value: the name of the attribute itself (e.g., selected="selected"). 所以空字符串似乎没有有效。