Изменилось ли значение input?

287
31 октября 2017, 00:58

Есть <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

Answer 1

Предлагаю вам при событии 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);
}
READ ALSO
Чтение данных бд в Cloud Functions в Firebase

Чтение данных бд в Cloud Functions в Firebase

Нужно сделать простую firebase функцию, которая формирует GET запрос и возвращает его результатНесколько параметров для запроса хранятся в бд firebase

192
Работа с Angular2

Работа с Angular2

Делаю лист с линками, где нужно добавлять, удалять, изменять и лайкать линки

253
Outlook.Application &amp; ActiveXObject

Outlook.Application & ActiveXObject

Всем привет! Подскажите - в IE использую ActiveXObject для получения вложений из открытого почтовика Outlook 2016Получение реквизитов письма, заголовков,...

235