我有以下代码在HTML网页中显示文本框。

<input type="text" id="userid" name="userid" value="Please enter the user ID" />

显示页面时,文本包含“ 请输入用户ID”消息。 但是,我发现用户需要单击3次才能选择所有文本(在这种情况下, 请输入用户ID )。

只需单击一下就可以选择整个文本吗?

编辑:

抱歉,我忘了说:我必须使用输入type="text"


#1楼

HTML(您必须在要在页面上使用的每个输入上放置onclick属性)

 <input type="text" value="click the input to select" onclick="this.select();"/>

或更好的选择

jQuery(此方法适用于页面上的每个文本输入,无需更改您的html):

<script  type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script type="text/javascript">$(function(){$(document).on('click','input[type=text]',function(){ this.select(); });});
</script>

#2楼

尝试:

onclick="this.select()"

这对我很有效。


#3楼

我知道这已经很老了,但是最好的选择是现在尽可能使用新的placeholder HTML属性:

<input type="text" id="userid" name="userid" placeholder="Please enter the user ID" />

除非输入值,否则这将导致文本显示,从而无需选择文本或清除输入。


#4楼

实际上,请使用onclick="this.select();" 但请记住不要将它与disabled="disabled"结合使用-否则将无法使用,您仍然需要手动选择或单击鼠标以进行选择。 如果您希望锁定要选择的内容值,请与属性readonly结合使用。


#5楼

捕获click事件的问题在于,文本中的每次后续单击都会再次选择它,而用户可能希望重新定位光标。

对我有用的是声明一个变量selectSearchTextOnClick,并将其默认设置为true。 点击处理程序检查该变量是否仍然为true:如果是,则将其设置为false并执行select()。 然后,我有一个模糊事件处理程序,将其设置为true。

到目前为止的结果似乎是我所期望的行为。

(编辑:我忽略了我曾尝试按照某人的建议捕获焦点事件,但这没有用:在焦点事件触发后,click事件可以触发,立即取消选择文本)。


#6楼

先前发布的解决方案有两个怪癖:

  1. 在Chrome浏览器中,通过.select()进行的选择不粘滞-添加轻微的超时即可解决此问题。
  2. 聚焦后,无法将光标放置在所需的位置。

这是一个完整的解决方案,可以选择所有焦点上的文本,但是允许在焦点之后选择特定的光标点。

        $(function () {var focusedElement;$(document).on('focus', 'input', function () {if (focusedElement == this) return; //already focused, return so user can now place cursor at specific point in input.focusedElement = this;setTimeout(function () { focusedElement.select(); }, 100); //select all text in any field on focus for easy re-entry. Delay sightly to allow focus to "stick" before selecting.});});

#7楼

当.select()在移动平台上不起作用时,此问题具有选项:以编程方式在iOS设备上的输入字段中选择文本(移动Safari)


#8楼

在输入字段中使用“占位符”代替“值”。


#9楼

如果您使用的是AngularJS,则可以使用自定义指令以方便访问:

define(['angular'], function () {angular.module("selectionHelper", []).directive('selectOnClick', function () {return {restrict: 'A',link: function (scope, element, attrs) {                element.on('click', function () {this.select();});}};});
});

现在,人们可以像这样使用它:

<input type="text" select-on-click ... />

该示例包含requirejs-因此,如果使用其他内容,则可以跳过第一行和最后一行。


#10楼

如果有人想在使用jQuery的页面加载中做到这一点(对搜索字段非常喜欢),这是我的解决方案

jQuery.fn.focusAndSelect = function() {return this.each(function() {$(this).focus();if (this.setSelectionRange) {var len = $(this).val().length * 2;this.setSelectionRange(0, len);} else {$(this).val($(this).val());}this.scrollTop = 999999;});
};(function ($) {$('#input').focusAndSelect();
})(jQuery);

基于这篇文章。 感谢CSS-Tricks.com


#11楼

列出的答案对我来说是不完整的。 我在下面链接了两个如何在Angular和JQuery中执行此操作的示例。

此解决方案具有以下功能:

  • 适用于所有支持JQuery,Safari,Chrome,IE,Firefox等的浏览器。
  • 适用于Phonegap / Cordova:Android和IO。
  • 输入聚焦后仅选择一次,直到下一次模糊然后聚焦
  • 可以使用多个输入,并且不会出现故障。
  • Angular指令具有很好的重用性,只需添加指令select-all-on-click
  • jQuery可以轻松修改

jQuery的查询: http ://plnkr.co/edit/VZ0o2FJQHTmOMfSPRqpH? p = preview

$("input").blur(function() {if ($(this).attr("data-selected-all")) {//Remove atribute to allow select all again on focus        $(this).removeAttr("data-selected-all");}
});$("input").click(function() {if (!$(this).attr("data-selected-all")) {try {$(this).selectionStart = 0;$(this).selectionEnd = $(this).value.length + 1;//add atribute allowing normal selecting post focus$(this).attr("data-selected-all", true);} catch (err) {$(this).select();//add atribute allowing normal selecting post focus$(this).attr("data-selected-all", true);}}
});

角度: http : //plnkr.co/edit/llcyAf?p=preview

var app = angular.module('app', []);
//add select-all-on-click to any input to use directive
app.directive('selectAllOnClick', [function() {return {restrict: 'A',link: function(scope, element, attrs) {var hasSelectedAll = false;element.on('click', function($event) {if (!hasSelectedAll) {try {//IOs, Safari, thows exception on Chrome etcthis.selectionStart = 0;this.selectionEnd = this.value.length + 1;hasSelectedAll = true;} catch (err) {//Non IOs option if not supported, e.g. Chromethis.select();hasSelectedAll = true;}}});//On blur reset hasSelectedAll to allow full selectelement.on('blur', function($event) {hasSelectedAll = false;});}};
}]);

#12楼

像这样的HTML <input type="text" value="click the input to select" onclick="javascript:textSelector(this)"/>

和没有绑定的javascript代码

function textSelector(ele){$(ele).select();
}

#13楼

您可以始终使用document.execCommand ( 所有主要浏览器都支持 )

document.execCommand("selectall",null,false);

选择当前焦点元素中的所有文本。


#14楼

输入自动对焦,并带有onfocus事件:

<INPUT onfocus="this.select()" TYPE="TEXT" NAME="thing" autofocus>

这使您可以打开一个选定了所需元素的表单。 它通过使用自动聚焦来敲击输入,然后向自身发送一个onfocus事件,该事件依次选择文本。


#15楼

您可以使用以下javascript代码段:

<input onClick="this.select();" value="Sample Text" />

但显然,它不适用于移动Safari。 在这种情况下,您可以使用:

<input onClick="this.setSelectionRange(0, this.value.length)" value="Sample Text" />

#16楼

嗯,这是TextBox的正常活动。

点击1-设置焦点

点击2/3 (双击)-选择文本

您可以在页面首次加载时将重点放在TextBox上,以将“选择”减少为单个双击事件。


#17楼

这是Shoban答案的可重用版本:

<input type="text" id="userid" name="userid"value="Please enter the user ID" onfocus="Clear(this);"
/>function Clear(elem)
{
elem.value='';
}

这样,您可以将清除脚本重用于多个元素。


#18楼

您要求的确切解决方案是:

<input type="text" id="userid" name="userid" value="Please enter the user ID" onClick="this.setSelectionRange(0, this.value.length)"/>

但是我想,您正在尝试在输入中显示“请输入用户ID”作为占位符或提示。 因此,您可以将以下内容用作更有效的解决方案:

<input type="text" id="userid" name="userid" placeholder="Please enter the user ID" />

#19楼

如果您只是想让占位符文本在用户选择元素时被替换,那么显然,如今最好使用placeholder属性。 但是,如果要在某个字段获得焦点时选择所有当前值,则@Cory House和@Toastrackenigma答案的组合似乎是最典型的。 使用focusfocusout事件,以及设置/释放当前焦点元素的处理程序,并在聚焦时全选。 一个angular2 / typescript示例如下(但将其转换为vanilla js并不容易):

模板:

<input type="text" (focus)="focus()" (focusout)="focusout()" ... >

零件:

private focused = false;public focusout = (): void => {this.focused = false;
};public focus = (): void => {if(this.focused) return;this.focused = true;// Timeout for cross browser compatibility (Chrome)setTimeout(() => { document.execCommand('selectall', null, false); });
};

#20楼

您可以更换

<input type="text" id="userid" name="userid" value="Please enter the user ID" />

带有:

<input type="text" id="userid" name="userid" placeholder="Please enter the user ID" />

占位符用于替换值,就像您希望人们能够在文本框中键入内容一样,而无需单击多次或使用ctrl + a。 占位符使它不是一个值,但顾名思义是占位符。 那就是在多个在线表单中使用的内容,上面写着“此处的用户名”或“电子邮件”,当您单击它时,“电子邮件”消失,您可以立即开始输入。


#21楼

这是React中的示例,但是如果您愿意,可以将其转换为Vanilla JS上的jQuery:

class Num extends React.Component {click = ev => {const el = ev.currentTarget;if(document.activeElement !== el) {setTimeout(() => {el.select();    }, 0);}}render() {return <input type="number" min={0} step={15} onMouseDown={this.click} {...this.props} />}
}

这里的窍门是使用onMouseDown因为在“ click”事件触发时元素已经获得焦点 (因此activeElement检查将失败)。

activeElement检查是必需的,以便用户可以将光标定位在所需的位置,而无需不断重新选择整个输入。

超时是必要的,因为否则我将选择文本,然后立即取消选择文本,因为我猜浏览器会进行光标定位检查后缀。

最后, 在React中el = ev.currentTarget是必需的因为React会重用事件对象,并且在setTimeout触发时,您将失去合成事件。


#22楼

注意:当您考虑onclick="this.select()" ,第一次单击时,将选择所有字符,之后,您可能想要编辑输入中的内容并再次单击字符之间,但是它将再次选择所有字符。 要解决此问题,您应该使用onfocus而不是onclick

单击时选择HTML文本输入中的所有文本相关推荐

  1. ue4字符串 区别 文本_UE4中使用富文本(RichTextBlock多格式文本块)

    前言 哈喽大家好啊~好久没有写东西了,最近闹疫情,实在是没心情!其实主要还是因为太懒了! 今天将为大家分享个不是很新的技术,但是又是在游戏开发里常出现的需求,富文本应用. 说到富文本,可能很多人并不知 ...

  2. python 文本框内容变化_当文本框中的文本发生变化时,动态读取文本输入中的文本?...

    我是kivy新手,我正试图用python编写一个应用程序,有一次,每当textinput被更改时,我都要从textinput读取文本,基于此,我想实现我的按钮功能-我已经看过所有文档,但我不知道怎么做 ...

  3. php文本输入数字,JavaScript实现文本框只能输入数字的方法介绍

    在我们日常开发中,为了更好的给用户带来体验,我们有的时候需要限制文本框输入内容的类型,这里我们很多时候都会使用到正则表达式来完成,今天我们就给大家介绍下JavaScript实现文本框只能输入数字.小数 ...

  4. html缩略文本,列表中展示富文本的缩略内容

    列表中显示富文本的缩略内容 业务中有一个一览列表,显示某个对象的一览信息.列表的其中一列用来显示对象的内容的缩略显示,该内容是含有各种html标签的富文本内容.开始决定不做处理直接显示,但看到一个一个 ...

  5. js向html中指定位置追加文本,JavaScript中如何添加文本节点?

    在javascript中提供了很多操作DOM文档的方法,当然也包括创建一个节点,下面我们来看一下JavaScript如何创建一个创建一个文本节点(text). JavaScript中添加文本节点的方法 ...

  6. 如何使用 Selenium 在 HTML 文本输入中模拟按 Enter 键?

  7. python读取中文txt文本-python中使用txt文本保存和读取变量

    ### 问题: 在python中需要经常有需要提前生成复杂的计算结果变量的需求减少程序计算运行时间的需求,因此这里把变量存在txt文本文件中. 解决方法: 使用两个函数解决问题,一个函数把变量保存到文 ...

  8. 计算机课任务文本框粘贴选中文本至光标处,职称计算机PPt考点:选择、复制、移动及删除文本...

    (l)选择文本编辑文本时操作对象主要是文本.对文本进行编辑的第一步是选择文本,事实上,处理任何对象,首先都要选中它,即表明将处理的内容是什么. 选择文本的操作方法如下: l)在要选择文本的前端单击,在 ...

  9. python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中

    一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...

最新文章

  1. Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计
  2. Git 常见问题记录
  3. 阿里平头哥首次交货!“让天下没有难造的芯片”
  4. C++中嵌入ie浏览器总结 .
  5. 关于重载函数的一些学习
  6. 北斗导航 | 学习PPP和PPP-RTK
  7. C++friend 友元类和友元函数
  8. np.c_与np.r_
  9. java获取当前月第一天和最后一天,上个月第一天和最后一天
  10. C#中的IO流操作(FileStream)
  11. 33、什么是 AIO?
  12. Java基于JSP+mysql的学科竞赛管理系统
  13. AVPlayer与AVPlayerViewController媒体播放器
  14. js异步和同步的区别
  15. Android学习资源汇总
  16. 使用jQuery,写一个简单的轮播图,实现切换功能!
  17. 核桃编程C语言,核桃编程毕业设计获奖感言?
  18. php代码编辑软件安卓,PHP代码编辑软件|Rapid PHP编辑器 v15.0 最新版
  19. 服务器无法用u盘安装系统安装win7系统安装不了怎么办,为什么新电脑不支持安装Win7操作系统?...
  20. 作死十法:如何激怒一位3D建模师?“危”字警告

热门文章

  1. Android左右连接和USING
  2. 算法------二叉树的层序遍历
  3. 第九周项目一-深体验复制(2)
  4. 十大Material Design开源项目
  5. 人工智能实践:TensorFlow笔记学习(六)—— 全连接网络实践
  6. 【Git】如何撤销改动
  7. 仿中国比特币首页趋势图,折线图,k线图
  8. (0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标
  9. java解析getresponsebodyasstring_java读取网站内容的两种方法是什么呢?
  10. 飞机大战boss入场代码_他又来了,BOSS直聘和国足谁先出线卡塔尔?