使用 JQuery 聚焦输入字段而不选择当前值文本
Posted
技术标签:
【中文标题】使用 JQuery 聚焦输入字段而不选择当前值文本【英文标题】:Focus input field with JQuery without selecting current value text 【发布时间】:2010-12-17 22:25:30 【问题描述】:$("#myinputfield").focus();
在已设置值的输入字段上执行此操作会导致选择当前值。如何在不选择文本的情况下聚焦字段?
【问题讨论】:
您为什么要这样做?如果您选择一个字段,它也会被选中。这是标准的用户行为。您希望插入符号在哪里? (正文开始?正文结束?) @Phrogz 它的行为方式可能与 textareas 现在的行为方式相同(使用 Tab 键时不会选择内容)。跨浏览器不一样,但只要它是一致的.. 【参考方案1】:我搜索了一下,发现您应该在关注后将您的值重新设置为所需的字段。
【讨论】:
见***.com/questions/13371430/… 当该字段被选项卡进入时,这在 chrome 中似乎不起作用。【参考方案2】:像这样在聚焦后将输入字段的值设置为自身的方法怎么样?
$("#myinputfield").focus().val($("#myinputfield").val());
【讨论】:
【参考方案3】:其他答案建议在聚焦后将输入字段的值设置为自身。如果在 Firefox 中,光标出现在输入的开头,而您希望它在结尾,则需要稍作修改。您必须先将值设置为空,然后再将其设置为之前的值。
var value = $("#myinputfield").val();
$("#myinputfield").focus().val('').val(value);
【讨论】:
【参考方案4】:你试过了吗?
var txt = $("#myinputfield").val();
$("#myinputfield").focus();
$("#myinputfield").val( txt );
【讨论】:
【参考方案5】:function focusField(id)
var inputField = document.getElementById(id);
if (inputField != null && inputField.value.length != 0)
if (inputField.createTextRange)
var FieldRange = inputField.createTextRange();
FieldRange.moveStart('character',inputField.value.length);
FieldRange.collapse();
FieldRange.select();
else if (inputField.selectionStart || inputField.selectionStart == '0')
var elemLen = inputField.value.length;
inputField.selectionStart = elemLen;
inputField.selectionEnd = elemLen;
inputField.focus();
else
inputField.focus();
【讨论】:
【参考方案6】:$(document).ready(function()
var $field = $("#formloginusername"),
oldVal = $field.val();
$field.focus().val('').val(oldVal);
);
演示:http://jsfiddle.net/X7Y8S/
我从 ahren 在其他主题的回答中获取了代码和演示,我认为这很有帮助。
【讨论】:
【参考方案7】:这个解决方案非常适合我:
$("#myinputfield").focus(function (event)
var value = $("#myinputfield").val();
setTimeout(function()
$("#myinputfield").val(value);
,10);
);
【讨论】:
以上是关于使用 JQuery 聚焦输入字段而不选择当前值文本的主要内容,如果未能解决你的问题,请参考以下文章