如何取消选择文本框的文本,当它得到焦点时,当tab被按下
How to unselect the text of a textbox when it gets focus, when tab is pressed?
一行中有一系列文本框,用于输入时间。当用户返回到已经编辑过的文本框时,浏览器会突出显示该文本框中的文本。
- 当文本框成为焦点时,我该如何取消选中文本呢?
- 将光标设置到文本框内文本的开头?
我试过下列方法,但都没有效果:
在textboxfocushandler:var html = $("#MyTextArea").val();
$("#MyTextArea").focus().val("").val(html);
为文本框选择处理程序:
if (window.getSelection) {
if (window.getSelection().empty) { // Chrome
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) { // Firefox
window.getSelection().removeAllRanges();
}
} else if (document.selection && document.selection.empty) { // IE?
document.selection.empty();
}
我认为问题是浏览器在焦点处理程序执行之后才选择文本。您可以尝试使用setTimeout()
来延迟代码,如下所示:
$('input').focus(function() {
var $input = $(this);
setTimeout(function() {
setCaretPos($input[0], 0, 0);
}, 0)
});
<<p> jsfiddle演示/strong> 使用如下方法设置插入符号的位置:
function setCaretPos(element, begin, end) {
if (element.setSelectionRange) {
element.setSelectionRange(begin, end);
} else if (element.createTextRange) {
var range = element.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', begin);
range.select();
}
}
如果你决定把焦点放在文本的末尾,你可以使用:
var end = $input.val().length;
setCaretPos($input[0], end, end);
信贷:我从jQuery掩码插件得到了setCaretPos()
函数的代码。该插件包含一个.caret()
插件方法,您可以使用
相关文章:
- 文本框焦点上的自动完成菜单
- 在文本区域的焦点上分割渐变
- 焦点输入时保持文本处于选中状态
- 无法在Chrome控制台中使用javascript将焦点和光标设置为输入文本
- 设置焦点动态创建的文本区域
- 使用 jQuery 检查文本框焦点
- 焦点新选项卡的文本区域引导程序 3 + 角度JS
- 如何在单击按钮时获得最后一个焦点文本框输入
- 将焦点设置为角度模板/路线/表单中的文本输入
- 使用jQuery在焦点上选择文本框是't在移动浏览器中工作
- 如何使用javascript将焦点设置为文本框
- 焦点事件不适用于动态生成的文本框
- 如何在隐藏的文本框上设置焦点
- OnRowEditing编辑文本框焦点
- 将焦点设置为嵌套iframe中的文本框
- 如何防止在html中模糊(焦点丢失)时取消选择所选文本
- 使用制表键时禁用只读文本框的光标焦点
- 输入文本焦点,如 Facebook 输入
- 跨浏览器输入文本焦点系统
- 当文本焦点(键盘打开)固定的标题隐藏(消失)