Есть <input placeholder="Вопрос" onblur="myFunc(this)" onkeydown="myFunc2(this, event)" type="text">
по blur срабатывает myFunc, можно ли в myFunc отследить было ли измененно значение внутри input, если - нет, то сделать return.
Нашел вариант для дефолтного значения if(e.defaultValue === e.value)
return;
Но тут берется значение для сравнения которое было при рендере, этого мало) Можно ли отследить вдруг пользователь ввел в пустой input -> 123 - я сохранил. И если повторно он поставит курсор в input -> сработает myFunc и нужно понять сделал ли он изменения в поле input
Предлагаю вам при событии focus у инпута включать setInterval и в его коллбэке проверять, было ли изменено значение инпута. А при событии blur вызывать clearInterval. По такому принципу, грубо говоря, работает цикл digest в Angular. То есть в вашем случае это будет выглядеть прмерно так:
<input placeholder="Вопрос" onblur="myFunc(this)" onfocus="myFunc1(this)" onkeydown="myFunc2(this, event)" type="text">
JavaScript:
// переменная для хранения interval id
var intervalId;
function myFunc1(element) {
// изначальное значение инпута
var initialValue = $(element).val();
// setInterval() возвращает interval id
intervalId = setInterval(function() {
// текущее значение инпута
var currentValue = $(element).val();
if(currentValue !== initialValue) {
console.log('value has been changed!');
}
}, 100);
}
// обрабатываем событие blur
function myFunc(element) {
clearInterval(intervalId);
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники