类型电子邮件不支持selectionrange

时间:2014-10-30 16:34:03

标签: javascript jquery email onfocus

当我在文本框的焦点上时,我正试图将光标设置到开头的位置。这就是我所拥有的:

$("ID").focus(function () {
    var input = this;
    setTimeout(function() {
        input.setSelectionRange(0, 0);
    }, 0);
});

但每次我尝试加载脚本时都会出现此错误:

  

Uncaught InvalidStateError:无法在'HTMLInputElement'上执行'setSelectionRange':输入元素的类型('email')不支持选择。

猜猜我无法在电子邮件中使用setSelectionRange。那么,关于如何在输入文本框中设置光标位置的任何其他解决方案(不更改电子邮件类型)?

2 个答案:

答案 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;
&#13;
&#13;

jsFiddle:https://jsfiddle.net/eLz6ukmm/

在FF33和Edge中测试。