JS-мастера, как остановить reset у input'а при нажатие ESC?

Есть инпут со значением «4», меняем значение на «5», через JS по нажатию на button. Потом нажимаем ESC, значение возвращается на 4.

Пробовал e.preventDefault() по keydown, как на самом элементе, так и на window.

Если изменить значение используя клавиатуру — ESC reset не делает.

Наткнулся на stackoverflow, что браузер должен получить onchange, тогда ESC не будет делать reset, но $('input').trigger('change') тоже не помог.
  • Вопрос задан
  • 4238 просмотров
Решения вопроса 1
У меня заработал сл код jsfiddle.net/nbEZA/3/
Здесь возвращается фокус только после того как значение было задано по нажатию на спан.
Я вижу происходящее у Вас так:
onmousedown — снимаем фокус с input
onclick — вызываем обработчик, повешенный на span
$('#input').focus(); — переводил фокус обратно (зачем перед изменением, тк потом все равно повторяется?)
$('#input').val('42'); — изменяет значение input (без onchange события)
$('#input').focus(); — переводил фокус обратно, но если фокус уже на элементе, то получаем возможность отменить по esc, тк фокус не менялся, а значение поменялось без onchange (но почему так не скажу)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Genome_X
@Genome_X
Гм, а кто вам мешает получить значение лежащее в инпуте ДО его изменения, сохранить его в некоторую переменную, и потом, при нажатии ESC (т.е. средствами JS отслеживая нажатие клавиши с этим кодом), просто возвращать в инпут предыдущее значение? Эффект будет точно таким же. Я в одном своем проекте (это было типа тестового задания) делал подобным образом. Причем, я предусмотрел несколько активных инпутов, у которых нужно было вернуть старое значение.
Так что попробуйте так, будет полная аналогия с обычным ресетом.
Ответ написан
vermilion1
@vermilion1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы