将事件聚焦/模糊在可编辑内容的元素上
Focus / blur events on contenteditable elements
我正在尝试侦听具有contenteditable=true
属性的span
上的焦点/模糊事件
下面是我尝试的(jQuery):
$('.editable').on('focus',function(){
var that = $(this),
defaultTxt = that.data('default');
that.html('');
});
$('.editable').on('blur',function(){
var that = $(this),
defaultTxt = that.data('default');
if(that.html() === ''){
that.html(defaultTxt);
}
});
但他似乎不起作用,因为span无法处理聚焦/模糊。无论如何,我该如何实现(需要IE8支持)?
有两种方法可以达到这种效果。
方法1:focusin
和focusout
$('.editable').on('focusin', function() {
// your code here
});
$('.editable').on('focusout', function() {
// your code here
});
focusin
和focusout
类似于focus
和blur
事件,但与后者不同的是,它们几乎(?)发射在每个元素上,也发射在气泡上。CCD_ 9和CCD_。由于一个已知的错误,Firefox 51及以上版本不支持此功能,但Firefox 52及以上版本完全支持。
方法2:click
和focus
只有当跨度周围有其他可focus
的元素时,这才有效。您所做的基本上是在任何其他元素上使用focus
事件作为模糊处理程序。
$('.editable').on('click', function() {
// your code here
});
$('*').on('focus', function() {
// handle blur here
// your code here
});
我不建议在大型网络应用程序中使用这种方法,因为浏览器性能会受到影响。
我为您创建了一个演示:
$('.editable').bind('click', function(){
$(this).attr('contentEditable',true);
});
$('.editable').bind('focus', function() {
var that = $(this);
//defaultTxt = that.data('default');
that.html('');
});
$('.editable').bind('blur', function() {
var that = $(this);
var defaultTxt = that.data('default');
if(that.html() === ''){
that.html(defaultTxt);
}
});
.editable{
padding: 5px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span class="editable" data-default="default">Some text</span>
我已经更改了你的代码,看看它。现在,如果你不键入任何内容,它会在失去焦点时保持旧值。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 将事件聚焦/模糊在可编辑内容的元素上
- 一个页面上有多个Ace编辑器,没有预先设置元素
- jQuery/Javascript在内容可编辑的当前段落后插入元素
- 如何删除包含内容可编辑跨度的整个跨度元素
- javascript正则表达式,用于编辑元素内部的css样式属性
- 在此内容可编辑元素中获取当前行和行索引
- 为什么触发点击内容可编辑不会激活元素和设置光标
- 我在Phaser有一个项目.我想在画布上的元素上做一个用户图像编辑器
- ContentEditable元素--将光标移回可编辑文本的开头
- 如果AngularJS中有可编辑的表行,那么表单元素放在哪里
- 如何设置元素的占位符文本 我无法编辑 HTML 并且 ID 正在更改
- 如何通过元素选择器获取tinyMCE编辑器实例
- “;idd”;html中的属性?编辑:我可以使用Javascript获得基于自定义属性的元素吗
- 在inspect元素上编辑HTML时刷新Chrome DOM
- 双击以编辑Meteor应用程序中的元素
- JAVASCRIPT - 在动态创建的编辑框中拦截键码 13(输入)并将元素传递给不同的函数
- 防止文本在内容可编辑元素中突出显示时被删除
- 如何防止用户在内容可编辑元素中键入新行
- 如何自动调整内容可编辑元素的大小