如何在html文本输入中实现以下行为:当用户单击输入时,即使已经选择了所有文本,也将选中所有文本 . 因此,没有任何可能删除/选择某些字符 .
目前我有以下内容:
elm.on('click', function(e) { e.preventDefault(); $(this).select(); });
但如果选择了文本,则单击会显示一个carret .
这是一个有趣的!
诀窍不是 click 事件上的 preventDefault() ,而是 mouseDown 事件 .
click
preventDefault()
mouseDown
$('#clickme').on('mousedown', function(e) { e = e || window.event; e.preventDefault(); $(this).select(); });
这是working fiddle和related question我得到了答案
因此,没有任何可能删除/选择某些字符 .
为此,我建议在输入中使用 readonly :
readonly
<input readonly type="text" ...
此外,如果您删除 e.preventDefault() ,它将继续保持选中状态 .
e.preventDefault()
看到这个小提琴:https://jsfiddle.net/dgryhdtL/
有时,当您单击所选文本时,它将取消选择 . 要解决这个问题,您需要创建一个小延迟:
var that = $(this); setTimeout(function(){ that.select(); }, 100);
看到这个小提琴:https://jsfiddle.net/dgryhdtL/1/
这是简单的代码:
$("input[type='text']").on("click", function () { //select the text in text field $(this).select(); });
Edit: 如果你的元素已经在 elm 变量中,那么你不需要编写jQuery选择器 . 您可以使用:
elm.on("click", function () { //select the text in text field $(this).select(); });
3 回答
这是一个有趣的!
诀窍不是
click
事件上的preventDefault()
,而是mouseDown
事件 .这是working fiddle和related question我得到了答案
为此,我建议在输入中使用
readonly
:此外,如果您删除
e.preventDefault()
,它将继续保持选中状态 .看到这个小提琴:https://jsfiddle.net/dgryhdtL/
更新
有时,当您单击所选文本时,它将取消选择 . 要解决这个问题,您需要创建一个小延迟:
看到这个小提琴:https://jsfiddle.net/dgryhdtL/1/
这是简单的代码:
Edit: 如果你的元素已经在 elm 变量中,那么你不需要编写jQuery选择器 . 您可以使用: