【发布时间】:2011-08-13 10:37:37
【问题描述】:
我怎样才能使当您在文本区域内单击时,它的全部内容都会被选中?
最终,当您再次单击时,取消选择它。
【问题讨论】:
-
@Blender:不,这个问题涉及突出显示元素中的文本,而不是文本区域。两者完全不同。
标签: javascript jquery forms textarea selection
我怎样才能使当您在文本区域内单击时,它的全部内容都会被选中?
最终,当您再次单击时,取消选择它。
【问题讨论】:
标签: javascript jquery forms textarea selection
为了防止用户在每次尝试使用鼠标移动插入符号时选择整个文本时感到恼火,您应该使用focus 事件而不是click 事件来执行此操作。以下将完成这项工作并解决 Chrome 中阻止最简单版本(即仅在 focus 事件处理程序中调用 textarea 的 select() 方法)无法工作的问题。
jsFiddle:http://jsfiddle.net/NM62A/
代码:
<textarea id="foo">Some text</textarea>
<script type="text/javascript">
var textBox = document.getElementById("foo");
textBox.onfocus = function() {
textBox.select();
// Work around Chrome's little problem
textBox.onmouseup = function() {
// Prevent further mouseup intervention
textBox.onmouseup = null;
return false;
};
};
</script>
jQuery 版本:
$("#foo").focus(function() {
var $this = $(this);
$this.select();
// Work around Chrome's little problem
$this.mouseup(function() {
// Prevent further mouseup intervention
$this.unbind("mouseup");
return false;
});
});
【讨论】:
tab 进入 textarea 则会失败 - 你的其他解决方案适用于两种情况:)
$("#foo").mouseup(function() {$("#foo").unbind("mouseup");return false;});你需要引用文本框而不使用this只需完整引用它路径..它会工作..
更好的方式,解决tab和chrome问题以及新的jquery方式
$("#element").on("focus keyup", function(e){
var keycode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if(keycode === 9 || !keycode){
// Hacemos select
var $this = $(this);
$this.select();
// Para Chrome's que da problema
$this.on("mouseup", function() {
// Unbindeamos el mouseup
$this.off("mouseup");
return false;
});
}
});
【讨论】:
我最终使用了这个:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
【讨论】:
readonly 属性将其设为只读。
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
【讨论】:
略短的 jQuery 版本:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
它可以正确处理 Chrome 角盒。示例见http://jsfiddle.net/Ztyx/XMkwm/。
【讨论】:
<textarea disabled>test</textarea> 中使用disabled 属性,但它不起作用,那么如何解决它?
Selecting text in an element (akin to highlighting with your mouse)
:)
使用该帖子上接受的答案,您可以像这样调用函数:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
【讨论】:
$(this).select() 来做这个,我会用它,因为它的代码更少:)