Тип электронной почты не поддерживает выделение

Я пытаюсь установить курсор в положение начала, когда я нахожусь в фокусе текстового поля. Вот что у меня есть:

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

Но я получаю эту ошибку каждый раз, когда пытаюсь загрузить скрипт:

Uncaught InvalidStateError: Не удалось выполнить 'setSelectionRange' для 'HTMLInputElement': тип элемента ввода ('email') не поддерживает выбор.

Думаю, я не могу использовать setSelectionRange на электронные письма. Итак, какие-либо другие решения о том, как установить мою позицию курсора в поле ввода текста (без изменения типа электронной почты)?

1 ответ

Верно, похоже есть ошибка при использовании setSelectionRangeфункция ввода электронной почты. Итак, что можно сделать, так это изменить тип ввода так, чтобыsetSelectionRange работает а не ошибка.

$('#ID').focus(function () {
    var input = this;
    setTimeout(function () {
        $(input).attr('type', 'text');
        input.setSelectionRange(0, 0);
        $(input).attr('type', 'email');
    }, 100);
});

Я знаю, что это старый вопрос, но я отвечу на него для будущих ссылок.

Ввод электронной почты с 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'>

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

Испытано в FF33 и Edge.

Другие вопросы по тегам