【发布时间】:2018-07-11 22:06:53
【问题描述】:
我有一个输入字段<input value="@website.com" type="text" name="email" id="email">,我想这样当用户关注这个字段时,它会将光标移动到@website.com之前。
我有以下 Javascript/jQuery 代码,但它似乎不起作用:
$(document).ready(function() {
$("#email").focusin(function(){
$("#email").focus();
$("#email")[0].setSelectionRange(0,0);
});
});
似乎.focus() 一直在调用focusin() 函数。
我知道$("#email")[0].setSelectionRange(0,0); 是将光标移到前面的正确方法,但是当字段有焦点时如何将其绑定到?
编辑:所以当我使用时:
$("#email").focus(function(){
$("#email")[0].setSelectionRange(0,0);
});
当我进入字段时它会将光标设置为开头,但当我单击时不会。
Edit2:这与 enter link description here 不同,因为它只是获取插入符号的位置,而我正在寻找插入符号的位置。
【问题讨论】:
-
如果你和
console.log()在上面的$("#email").focus();之前检查控制台,你会看到你正在通过.focus创建无限循环,因为focusin事件触发,结果在maximum call stack size exceeded错误中。 -
首先...
$("#email")[0]是可憎的。你强制 jQuery 创建一个对象......然后你使用它的[0],它与document.getElementById("#email")相同。有关添加到 jQuery 对象中的这个元素的更多信息,请公开它。 -- 所以这在语法上是一个“doh!” -
在我上面的评论中,
you disclose it.应该是you discard it.;)
标签: javascript jquery focus