我使用这段代码尝试在用户聚焦于字段时选择字段中的所有文本。发生的事情是,它选择了所有的一秒钟,然后它被取消选择,输入光标留在我点击的地方…
$("input[type=text]").focus(function() {
$(this).select();
});
我希望一切都能被选中。
我使用这段代码尝试在用户聚焦于字段时选择字段中的所有文本。发生的事情是,它选择了所有的一秒钟,然后它被取消选择,输入光标留在我点击的地方…
$("input[type=text]").focus(function() {
$(this).select();
});
我希望一切都能被选中。
当前回答
大多数这些解决方案的问题是,当在输入字段中更改光标位置时,它们不能正常工作。
onmouseup事件改变了字段中的光标位置,这是在onfocus之后触发的(至少在Chrome和FF中)。如果你无条件地丢弃鼠标,那么用户就不能用鼠标改变光标的位置。
function selectOnFocus(input) {
input.each(function (index, elem) {
var jelem = $(elem);
var ignoreNextMouseUp = false;
jelem.mousedown(function () {
if (document.activeElement !== elem) {
ignoreNextMouseUp = true;
}
});
jelem.mouseup(function (ev) {
if (ignoreNextMouseUp) {
ev.preventDefault();
ignoreNextMouseUp = false;
}
});
jelem.focus(function () {
jelem.select();
});
});
}
selectOnFocus($("#myInputElement"));
如果字段当前没有焦点,代码将有条件地阻止鼠标的默认行为。它适用于以下情况:
当字段未聚焦时单击 当域有焦点时单击 踏着踏着进入田野
我已经在Chrome 31、FF 26和IE 11中进行了测试。
其他回答
与原生JavaScript select()一起工作很好。
$("input[type=text]").focus(function(event) {
event.currentTarget.select();
});
或者概括地说:
$("input[type=text]")[0].select()
找到一个很棒的解决方案阅读这篇文章
$(function(){
jQuery.selectText('input:text');
jQuery.selectText('input:password');
});
jQuery.extend( {
selectText: function(s) {
$(s).live('focus',function() {
var self = $(this);
setTimeout(function() {self.select();}, 0);
});
}
});
我使用FF 16.0.2和jquery 1.8.3,所有的代码在答案不工作。 我使用这样的代码工作。
$("input[type=text]").focus().select();
这将完成工作,并避免您无法再通过鼠标选择部分文本的问题。
$("input[type=text]").click(function() {
if(!$(this).hasClass("selected")) {
$(this).select();
$(this).addClass("selected");
}
});
$("input[type=text]").blur(function() {
if($(this).hasClass("selected")) {
$(this).removeClass("selected");
}
});
我总是使用requestAnimationFrame()来跳过内部事件后机制,这在Firefox中工作完美。还没有在Chrome上测试过。
$("input[type=text]").on('focus', function() {
requestAnimationFrame(() => $(this).select());
});