我目前想要关注第一个输入元素,而不选择输入元素内的预设值文本。如何聚焦我的输入元素,然后取消选择其中的文本?我目前关注的jQuery如下。
$(document).ready(function() {
$("input[name='title']").focus();
});
我目前想要关注第一个输入元素,而不选择输入元素内的预设值文本。如何聚焦我的输入元素,然后取消选择其中的文本?我目前关注的jQuery如下。
$(document).ready(function() {
$("input[name='title']").focus();
});
您可以使用selectionStart
和selectionEnd
属性:
$(document).ready(function() {
$("input[name='title']").each(function(){
this.focus();
this.selectionEnd = this.selectionStart;
});
});
$(document).ready(function() {
$("input[name='title']").focus();
$("input[name='title']").val($("input[name='title']").val());
});
这是基于上述 Danilo Valente 的回答。我发现在 Chrome 上我必须在调用之前使用一点延迟this.selectionEnd = this.selectionStart
,否则输入文本将保持选中状态:
这适用于我在 Chrome、Firefox、Safari 和 IE(已测试 IE 10)上
$("input").focus(function() {
var input = this;
setTimeout(function() { input.selectionStart = input.selectionEnd; }, 1);
});
这是一个演示:http: //jsfiddle.net/rangfu/300ah0ax/2/
$("input[name='title']").focus(function()
{
var elem = $(this);
elem.val(elem.val());
});
想添加一些增强的解决方案,也关心取消选择时的实际插入符号定位。
我使用了以下input
元素方法:
<input (blur)="onLocalFocusOut()" (click)="onInputClick($event)" (mousedown)="onMouseDown($event)" />
这些方法如下所示:
public onInputClick(event: MouseEvent): void {
if (!this._initialSelectAll) {
(event.target as HTMLInputElement).select();
this._initialSelectAll = true;
}
}
public onMouseDown(event: MouseEvent): void {
if (this._initialSelectAll) {
(event.target as HTMLInputElement).selectionStart = (event.target as HTMLInputElement).selectionEnd = 0;
}
}
public onLocalFocusOut(): void {
this._initialSelectAll = false;
this.onFocusChange(false);
}
这样的设置确保对于元素中的每个第click
一个input
,将选择所有字段内容。任何后续操作click
都将清除选择并将插入符号定位在实际的鼠标单击坐标处。每当input
元素失去焦点时,该逻辑将被重新初始化。
html
和code
是为它编写的,但angular 2+
它很容易适应任何其他编码框架。
不明智的购买可能会对您有所帮助
基本:覆盖已经存在的内容...
$(document).ready(function() {
$('#t1').focus();
$('#t1').val($('#t1').val());
});