听一个CONTENTEDITABLE HTML元素
我想弄清楚的事件,如果有任何的方式来听像focus
或contenteditable
属性的HTML元素的change
事件。听一个CONTENTEDITABLE HTML元素
我有这样的HTML标记:
<p id="test" contenteditable >Hello World</p>
我已经试过这没有任何成功(JSBin):
var test = document.querySelector('#test'); test.addEventListener('change', function(){
alert('content edited');
}, false);
test.addEventListener('DOMCharacterDataModified', function(){
alert('content edited');
}, false);
test.addEventListener('focus', function(){
alert('content edited');
}, false);
我不想听到键盘或鼠标事件。我在W3C和MDN中找不到关于contenteditable
的任何明确文件。
是否可以在内容可编辑的HTML元素上收听change
和focus
或其他事件?
回答:
不是。 contenteditable
元素没有change
事件,也没有HTML5input
事件,尽管我认为这将最终出现。这是一个痛苦。
UPDATE 2012年6月23日
最新的WebKit支持在contenteditable
元素HTML5 input
事件一样,火狐14
focus
,但是,没有工作一样,DOMCharacterDataModified
在大多数浏览器中(尽管显然不是IE < 9)。请参阅http://jsfiddle.net/UuYQH/112/
顺便说一句,contenteditable
不是布尔型属性:它需要一个值,它应该是“true”,“false”,“inherit”和空字符串之一(相当于“true” )。
回答:
我知道这是有点晚,但jQuery的似乎有重点的工作,看看这个例子了:
http://jsfiddle.net/powerphillg5/EGtSC/
$("#test").focus(function(){ $("#log").append("<li>Item Focused</li>");
});
我希望这可以帮助,但如果它不是你要找什么,因为我会虚心接受这个选票。
回答:
模糊(当该区域失去焦点)并集中这两个作品。至少在jQuery中。 使用Chrome 28和Safari 6.
$("#test").blur(function(){ $("#log").append("<li>Item lost focus</li>");
});
回答:
CONTENTEDITABLE引入归途中IE 5.5测试,它是由JavaScript 1.1/1.2 API和第一施加到内部框架,稍后DIV的支撑。它在一定程度上支持所有浏览器。现在,在HTML5规范中,大多数元素都可以接受这个属性(但要注意向后兼容)。 onchange事件支持可能仍然适用于形成最初设计的元素,与此属性几乎没有关系。你的选择仍然是按键事件,这很容易捕捉,当与目标元素检查相结合时,你对onchange有类似的结果。它可能不是理想的边缘案例,但对于大多数使用情况,我会走这条路线,也是最向后兼容的。
以上是 听一个CONTENTEDITABLE HTML元素 的全部内容, 来源链接: utcz.com/qa/261220.html