当我在文本框的焦点上时,我正试图将光标设置到开头的位置。这就是我所拥有的:
$("ID").focus(function () {
var input = this;
setTimeout(function() {
input.setSelectionRange(0, 0);
}, 0);
});
但每次我尝试加载脚本时都会出现此错误:
Uncaught InvalidStateError:无法在'HTMLInputElement'上执行'setSelectionRange':输入元素的类型('email')不支持选择。
猜猜我无法在电子邮件中使用setSelectionRange
。那么,关于如何在输入文本框中设置光标位置的任何其他解决方案(不更改电子邮件类型)?
答案 0 :(得分:0)
是的,在使用setSelectionRange
函数进行电子邮件输入时似乎存在一个错误。因此,可以做的是修改输入的类型,以使setSelectionRange
正常工作而不出错。
$('#ID').focus(function () {
var input = this;
setTimeout(function () {
$(input).attr('type', 'text');
input.setSelectionRange(0, 0);
$(input).attr('type', 'email');
}, 100);
});
答案 1 :(得分:-1)
我知道这是一个老问题,但我会回答它以供将来参考。
使用setSelectionRange输入的电子邮件目前正在与所有主流浏览器一起使用。
以下是一个例子:
jQuery('.email').focus(function() {
jQuery(this)[0].setSelectionRange(2, 5);
})

.email
{
padding: 15px;
width: 350px
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="email" name="email" class='email' value='testin_email_selection'>
&#13;
jsFiddle:https://jsfiddle.net/eLz6ukmm/
在FF33和Edge中测试。