Сообщение об ошибке HTML повторяется слишком быстро

#javascript #dhtml #user-experience

#javascript #dhtml #пользовательский интерфейс

Вопрос:

При нажатии кнопки отправки я отображаю ошибку проверки в DIV с:

 msgStr = validate(...);
document.getElementById("msgArea").innerHTML = msgStr;
 

Но если пользователь снова нажимает «Отправить» (возможно, изменяя данные, но получая ту же ошибку проверки), для них нет обратной связи о том, что отправка действительно что-то сделала. Страница находится там «замороженной» (для пользователя).

Я попытался очистить область перед вызовом проверки с помощью:

 document.getElementById("msgArea").innerHTML = '';
msgStr = validate();
document.getElementById("msgArea").innerHTML = msgStr;
 

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

Любые предложения о том, как обеспечить обратную связь в этом случае?

Комментарии:

1. Как вы получаете значение для проверки?

2. Функция validate () просто проверяет, что определенные поля формы имеют соответствующий формат (например, адрес электронной почты содержит «@», номер телефона совпадает ###-###-####, имя не является пустым и т.д.). Поэтому validate() просто возвращает (возможно, пустое)строка с объединенными строками.

Ответ №1:

Скорее всего, вы не видите его изменения, потому что флэш-память слишком быстрая. Если вы используете библиотеку javascript (jquery, yui и т. Д.), Вы можете использовать функцию fade in, Чтобы сделать ее более заметной. Если нет, вы можете использовать серию таймеров и изменений стиля, чтобы сделать изменения более заметными. Вот скрипка, которая демонстрирует, как это сделать: http://jsfiddle.net/cbargren/S6ZjC /

Комментарии:

1. Ах, классная идея и спасибо за образец. Я посмотрю, смогу ли я работать с чем-то подобным.

Ответ №2:

Похоже, JavaScript где-то умирает.

Откройте свою страницу в Google Chrome и перейдите в «Инструменты> Консоль JavaScript».

Если оно прерывается, вы увидите красные сообщения об ошибках. Оттуда у вас больше шансов узнать, в чем проблема. Если вы все еще в тупике, сообщите нам об ошибках, которые вы получаете вместе с любым дополнительным полезным кодом.

Комментарии:

1. Нет, дело не в том, что JS умирает. Сообщений об ошибках нет, и я могу просмотреть весь код.

Ответ №3:

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

Я бы хотел применить «обновленное» состояние к форме (например, к классу), которое каким-то образом изменяет сообщение проверки. Таким образом, после проверки состояние «udpated» удаляется (то есть данные снова «устаревают») до тех пор, пока пользователь снова что-то не изменит. Это лучше работает с фокусом и / или изменениями данных (поэтому вам нужно удерживать содержимое до тех пор, пока не произойдет обновление поля).