在此之前,被标记为重复的,我要你知道,没有人真正对这个具体问题提供了一个很好的答案。 在中,当它集中CONTENTEDITABLE格全选所有文字/点击 ,公认的答案和Tim向下的回答都是没有帮助的,因为他们只有当元素已经专注工作。 就我而言,我希望有一个按钮,点击后可以选择在CONTENTEDITABLE格中的所有文本,即使在div之前没有关注。
我怎么能这样做?
在此之前,被标记为重复的,我要你知道,没有人真正对这个具体问题提供了一个很好的答案。 在中,当它集中CONTENTEDITABLE格全选所有文字/点击 ,公认的答案和Tim向下的回答都是没有帮助的,因为他们只有当元素已经专注工作。 就我而言,我希望有一个按钮,点击后可以选择在CONTENTEDITABLE格中的所有文本,即使在div之前没有关注。
我怎么能这样做?
我使用了一些代码从这个线程拿出我的答案。 这是100%的jQuery,你问也。 希望你喜欢 :)
jQuery.fn.selectText = function(){
var doc = document;
var element = this[0];
console.log(this, element);
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
$("button").click(function() {
$("#editable").selectText();
});
的jsfiddle链接。
例如,在下一情况下,如果用户设定的对焦成可编辑的div(使用鼠标,键盘或通过点击按钮)可编辑然后股利内容被选择。
<div id="editable" style=" border:solid 1px #D31444" contenteditable="true" onfocus="document.execCommand('selectAll', false, null);"> 12 some text... </div> <button onclick="document.getElementById('editable').focus();" >Click me</button>
上的jsfiddle: http://jsfiddle.net/QKUZz/
伟大的功能。
我已经适应它通过类来实现充分的选择在任意数量的可编辑的div的文字,无论是直接点击,或标签来:
$.fn.selectText = function(){
var doc = document;
var element = this[0];
//console.log(this, element);
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
$(".editable").on("focus", function () {
$(this).selectText();
});
$(".editable").on("click", function () {
$(this).selectText();
});
$('.editable').mouseup(function(e){
e.stopPropagation();
e.preventDefault();
// maximize browser compatability
e.returnValue = false;
e.cancelBubble = true;
return false;
});
HTML:
<div class="editable" style="border:dotted 1px #ccc;" contenteditable="true">01 text...</div>
<div class="editable" style="border:dotted 1px #ccc;" contenteditable="true">02 text...</div>
<div class="editable" style="border:dotted 1px #ccc;" contenteditable="true">03 text...</div>
小提琴:
http://jsfiddle.net/tw9jwjbv/
<div id="test" style=" border:solid 1px #D31444" contenteditable="true" onclick="document.execCommand('selectAll',false,null)">12 some text...</div>
通过在链接提供了这个答案来看,不能使用代码上点击您的按钮内。
什么即时消息说,在格连说onfocus="document.execCommand('selectAll',false,null)"
然后使用jQuery触发焦点$('#test').focus();
Chrome并选择一切,所以我只是说RAF解决它:
requestAnimationFrame(() => document.execCommand('selectAll'));
Unpachted版本: http://jsfiddle.net/QKUZz/
修补版本: http://jsfiddle.net/0aqptw8m/