【发布时间】:2017-03-17 11:08:41
【问题描述】:
我有许多需要重复填写的输入字段,因此我通常使用 Tab 来浏览表单。
字段具有需要添加的默认后缀值。当我通过鼠标点击输入时,它按预期工作。
但是,当我在输入之间切换时,它会选择所有文本,这在我的情况下是不受欢迎的行为。
看看这个:
function setCaretPosition(elem, caretPos) {
if (elem == null) return;
if (elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
} else if (elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
} else {
elem.focus();
}
}
$(document).ready(function() {
$('input').focus(function() {
setCaretPosition(this, 0);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input1" value=" km/h" />
<input type="text" id="input2" value=" kg" />
- 当您在任何输入内单击时,插入符号会设置在开头。
- 当您在输入之间 Tab 插入符号未设置。而是突出显示整个输入内容。
如何防止文本输入在使用标签导航时突出显示其内容?
我更喜欢不使用setTimeout 的答案(如果可能的话)。
【问题讨论】:
-
如果你认为它是重复的,为什么不以重复为理由投票关闭?
-
您确定点击时它可以工作吗?单击时插入符号不会移动到位置 0!
-
@ibrahimmahrir 它绝对适用于最新的 Firefox。我真的不需要与其他浏览器兼容,因为它旨在在我的内部工具中工作。
-
注意:插入符号将设置为 Chrome 中值的末尾。 FF和IE设置为开头。我知道你说过你不关心交叉兼容性,只是给别人的一个注释。
标签: javascript html