#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» удаляется (то есть данные снова «устаревают») до тех пор, пока пользователь снова что-то не изменит. Это лучше работает с фокусом и / или изменениями данных (поэтому вам нужно удерживать содержимое до тех пор, пока не произойдет обновление поля).