<!DOCTYPE html>
<html>
<head>
<body>
<input type="text" value="" id="input" />
<script>
var input = document.getElementById('input')
input.addEventListener('input', function (e) {
console.log('input')
})
Object.defineProperty(input, "_value", {
get: function () { return this.value; },
set: function (v) {
console.log('changed', v)
this.value = v
}
})
// здесь не value, а _value как сеттер-геттер
input._value = 'text'
</script>
</body>
</html>
https://stackoverflow.com/questions/...nput-type-text
ну и да, это костыли...