TransWikia.com

Как сделать так, чтобы при нажатии на текстовое поле курсор ставился в конце?

Stack Overflow на русском Asked by Yuliya on January 19, 2021

Использую для input с type=’text’ маску для ввода номера телефона (+7(…)…-..-..). Всё работает, но проблема в том, что если пользователь клиент по полю слева, то курсор появляется перед маской, т. е. перед +7. Как сделать, чтобы курсор автоматически перемещался в конец поля?

2 Answers

Вот пример - если при фокусе каретка левее нужной позиции, то она ставится в нужную позицию:

let input = document.querySelector('input');
let caretPos = 4;
input.addEventListener('focus',()=>{
  setTimeout(()=>{
    if( input.selectionStart < caretPos ){
      input.setSelectionRange( caretPos, caretPos );
    }
  },0);
});
<input type="text" value="+7 (___) ___ - ___ - ___ - ___">

Answered by Pavel Grishaev on January 19, 2021

Насколько мне известно, за любое событие на объекте отвечает его фильтр событий. Смотря на чём пилите. Если юзаете .Net MVC или Qt там эта фича точно должна быть. Если же просто html то наверное в JS function()... и добавляете её в фильтр обработки событий объекта в теге элемента: <input type="text" onclick="function();" ... Всех благ.

Answered by Init_the_Pool on January 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP