Как определить, произошло ли событие изменения из пользовательского ввода? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть динамическая форма c, которая обновляется на основе выбранных пользователем значений.

Одно конкретное поле ввода (номер типа) Я рассчитал значение по умолчанию и обновил. Но если пользователь каждый выбирает свое собственное значение, я хочу уважать это и не пересчитывать значение по умолчанию, поскольку они продолжают заполнять форму.

Каков наилучший способ обнаружения ввода пользователя по сравнению с вводом моих программ?

Я думал о событиях onclick, но хочу уважать, если они используют клавиатуру для входа. Я думал о событии при изменении, но так как моя программа часто пересчитывает значение, это не сработает.

Я нашел этот ответ, в котором есть идеи для C# полей Определить, произошло ли измененное событие из-за ввода пользователя или нет

Я нашел этот ответ, в котором говорится об использовании ввода событие - Обнаружение изменения входа в jQuery? - кажется, что оно может работать, но срабатывает при каждом нажатии клавиши, которое кажется не идеальным.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Вот идея, которая не требует значительных вмешательств кода или большого количества триггеров событий: добавьте событие focousout или blur (в зависимости от того, что больше соответствует потребностям вашей страницы) на ваш вход, который при срабатывании возьмет значение входа и сравнит его с вашим расчетным значением по умолчанию. Если отличается, это будет означать, что пользователь выбрал другое значение. Затем вы можете сохранить значение пользователя в скрытом элементе (простой диапазон поможет).

В следующий раз, когда вы пересчитаете значение по умолчанию, вы можете проверить, имеет ли скрытый элемент какой-либо контент, а затем не заменить значение в вашем входе. Или вы можете проверить содержимое скрытого диапазона, содержащего вводимые пользователем данные, прежде чем выполнять перерасчет и вообще его избежать.

Это решение, которое не меняет пользовательский интерфейс. Если возможно, самым простым решением было бы добавить флажок, который позволяет пользователю определять свое собственное значение.

0 голосов
/ 27 февраля 2020

Что вы думаете, если вы установили событие «keydown» на входе. И если ваш скрипт меняет значение, чем вы просто используете "element.value =" Foo "?

...