Как сфокусироваться на конце текста в поле ввода с помощью Javascript.
Я хочу навести мышку на поле ввода, чтобы сфокусироваться на нем, а ругательство в конце текста.
Я просто использую Event как следующее, проклятие на первом.
document.addEventListener('mouseover', function (e) {
if (e.target.localName ==='input'){
e.target.focus();
}
});
document.addEventListener('mouseout', function (e) {
e.target.blur();
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При фокусировке ввода вы можете стереть введенное значение и снова установить то же значение.
document.addEventListener('mouseover', function (e) {
if (e.target.localName ==='input'){
e.target.focus();
var val = e.target.value; //store the value of the element
e.target.value = ''; //clear the value of the element
e.target.value = val; //set that value back.
}
});
document.addEventListener('mouseout', function (e) {
e.target.blur();
});<input id = "search" type = "text" size = "30" name = "search"/>На самом деле не уверен, что изменение значения здесь является хорошей идеей, поскольку могут быть другие функции, которые могут повлиять на изменение значения этого поля ввода.
Он восстанавливает значение немедленно, так что проблем не будет.
Независимо от этого, изменение значения туда и сюда для достижения чего-то не является хорошей практикой. К нему будет прикреплена какая-то неизвестная функция, и она может непреднамеренно сработать при изменении этого свойства, особенно это применимо, если вы используете некоторые библиотеки/плагины :)
Более безопасное решение, при котором вы не изменяете содержимое/значение поля ввода, — активировать выбор значения.
document.addEventListener('mouseover', function (e) {
let elm = e.target;
if (elm.localName ==='input'){
elm.focus();
elm.selectionStart = elm.value.length;
elm.selectionEnd = elm.value.length;
}
});
document.addEventListener('mouseout', function (e) {
e.target.blur();
});<input value = "hello"/>Спасибо, это лучше, чем первое, которое изменяет значение и влияет на функцию, которая отображает всплывающую панель значков при фокусировании поля ввода.
@lyscop .. рад узнать. Пожалуйста, отметьте ответ, который работает для вас, как решение, чтобы этот вопрос был закрыт.
К сожалению, это показывает ошибку, e.target.selectionStart = e.target.value.length; Невозможно прочитать свойство «длина» неопределенного
это не e . должно быть elm .. правильно проверьте код.
@lyscop .. вы можете опубликовать код, который вы используете?
Выложил на Greasyfork greasyfork.org/ru/scripts/…
@lyscop отлично работает для меня
Я считаю, что если ввод равен нулю, SelectionStart может получить значение, следует ли мне добавить судью? i.imgur.com/uSnMeAD.png
Вы уверены, что поле Google работает как поле ввода? Я так не думаю.
Ага, так это поле ввода не должно быть нулевым, добавляю судью if (e.target.value){
это работает для вас, @lyscop? если так, не могли бы вы проголосовать?