jQuery – 从textarea中select所有文本
我怎样才能做到这一点,当你点击一个textarea内,其整个内容被选中?
最后当你再次点击时,取消select它。
为了防止用户在每次尝试使用鼠标移动插入符号时select整个文本时感到恼火,应该使用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; }); });
更好的方式,解决选项卡和铬的问题和新的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(); });
稍微短一点的jQuery版本:
$('your-element').focus(function(e) { e.target.select(); jQuery(e.target).one('mouseup', function(e) { e.preventDefault(); }); });
它正确处理Chrome的angular落案件。 例如,请参阅http://jsfiddle.net/Ztyx/XMkwm/ 。
$('textarea').focus(function() { this.select(); }).mouseup(function() { return false; });
在元素中select文本(类似于用鼠标突出显示)
🙂
使用该post的接受答案,你可以调用这样的function:
$(function() { $('#textareaId').click(function() { SelectText('#textareaId'); }); });