我读了一些这方面的文章,但我似乎找不到任何关于不同浏览器如何处理事情的可靠信息。


当前回答

当元素具有disabled属性时,不会触发任何事件。

下面这些都不会被触发。

$("[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属性时,不会触发任何事件。

下面这些都不会被触发。

$("[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”提交任何内容。

disabled和readonly之间的区别是只读控件仍然可以工作,仍然是可聚焦的,而disabled控件不能接收焦点,也不能与表单一起提交

可以设置readonly属性以防止用户更改值,直到满足其他一些条件,而可以设置disabled属性以防止用户使用元素