从提交按钮的onClick,我在DIV中显示验证错误:
msgStr = validate(...);
document.getElementById("msgArea").innerHTML = msgStr;
但是如果用户再次单击提交(可能更改数据但得到相同的验证错误),则没有反馈他们提交实际上做了任何事情。该页面位于“冻结”(对用户)。
我尝试在调用验证之前清除该区域:
document.getElementById("msgArea").innerHTML = '';
msgStr = validate();
document.getElementById("msgArea").innerHTML = msgStr;
但这并没有显示任何效果。我假设浏览器没有时间在设置相同的msgStr之前更新渲染,或者它发生得太快以至于用户没有看到“闪存”。
有关如何在这种情况下提供反馈的任何建议吗?
答案 0 :(得分:1)
由于闪光太快,您很可能看不到它的变化。如果你正在使用javascript库(jquery,yui等等),你可以使用淡入功能使其更加引人注目。如果没有,您可以使用一系列计时器和样式更改来使更改更加明显。这是一个演示如何做到这一点的小提琴:http://jsfiddle.net/cbargren/S6ZjC/
答案 1 :(得分:0)
听起来像JavaScript可能会在某处死亡。
在Google Chrome中打开您的页面,然后转到“工具> JavaScript控制台”。
如果它坏了,您将看到红色错误消息。从那里你有更好的机会知道问题是什么。如果您仍然难过,请告诉我们您与其他任何有用的代码相关的错误。
答案 2 :(得分:0)
如前所述,问题是由于您的步骤是连续的,但实际上从用户的角度来看是近乎瞬间发生的。
我希望将一个“更新”状态应用于表单(例如:一个类),它以一些小的方式改变验证消息。这样,在验证时,“udpated”状态被移除(即,数据再次“陈旧”),直到用户再次改变某些东西为止。这样可以更好地进行数据的聚焦和/或更改(因此您需要保留内容,直到更新字段为止)。