Вот код, который я использую для установки позиции каретки перед третьим символом входного значения. Он работает отлично, за одним исключением - функция setCaretPosition() выполняется через мгновение после запуска сценария по умолчанию, пока я хочу, чтобы это произошло немедленно. Есть ли шанс избежать размещения курсора по умолчанию без добавления элемента overlay?Запретить размещение курсора по умолчанию
function setCaretPosition(elemId, caretPos) {
var el = document.getElementById(elemId);
el.value = el.value;
//^this is used to not only get "focus", but
// to make sure we don't have it everything -selected-
// (it causes an issue in chrome, and having it doesn't hurt any other browser)
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', caretPos);
range.select();
return true;
}
else {
// (el.selectionStart === 0 added for Firefox bug)
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(caretPos, caretPos);
return true;
}
else { // fail city, fortunately this never happens (as far as I've tested) :)
el.focus();
return false;
}
}
}
}
var inputId = 'test';
document.getElementById(inputId).addEventListener('click', function() {
setCaretPosition(inputId, 2);
},false)
https://jsfiddle.net/82fnpmf6/