вызов события change из метода для input

158
06 декабря 2021, 08:10

Столкнулся с такой вот задачей - есть функция конструктор, InputElement() которая создает input. В объекте есть два метода

InputElement.prototype.onChange = function(callback){
    elem.addEventListener('change', callback);
}  
InputElement.prototype.setValue = function(inputedValue){
    elem.value = inputedValue;          
    return elem;
}

как в методе setValue вызвать коллбэк из onChange, чтоб сработало такое условие:

    let result;
    let input= new InputElement();
    input.onChange(() => result = 'A');
    input.setValue('B');
    console.log(result)// -> A

Был вариант с установкой атрибута disabled для элемента после события change, но не сработало

Answer 1

function InputElement() { 
  this.elem = document.createElement("input"); 
  document.body.appendChild(this.elem); 
} 
 
InputElement.prototype.setValue = function(value) { 
  this.elem.value = value; 
  this.elem.dispatchEvent(new Event('change')); 
  return this.elem; 
} 
 
InputElement.prototype.onChange = function(callback) { 
  this.elem.addEventListener('change', callback); 
} 
 
let result; 
let input = new InputElement(); 
input.onChange(() => result = 'A'); 
input.setValue('B'); 
console.log(result) // -> A

READ ALSO
Dropdown не работает в IE11 [закрыт]

Dropdown не работает в IE11 [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

194
Фиксация одного из блоков на странице

Фиксация одного из блоков на странице

Есть один основной блок, он делиться на два других

239