Тип электронной почты не поддерживает выделение
Я пытаюсь установить курсор в положение начала, когда я нахожусь в фокусе текстового поля. Вот что у меня есть:
$("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.