使用js验证表单的时候碰到这样一件事情:
使用变量 t 记录是否满足表单提交要求,如果不满足则给出提示信息并阻止表单提交。一切都很美好,也没有什么缺陷。问题在于:当用户提交过表单之后,服务器端验证错误,用户的表单数据没有存入数据库。这个时候用户使用后退按钮,输入数据之后再次提交。如果不满足正则要求,js代码会阻止。但是奇怪就在这里:如果浏览器回退之后,连续点击两次提交按钮,无论 t 是否满足表单提交要求,js在第二次都不会阻止表单提交。有谁知道这是怎么回事吗?代码可参考如下:
页面上有一个表单,表单只有一个文本框,name = "name",id="name".还有一个提交按钮,使用下面的js代码验证表单:if($){
nameCheck = 0;
$(document).ready(
function(){
 $("#name").blur(
 function(){
 var name = $.trim($("#name").val());
if(name == "")
{ nameCheck = 0;}
else
{
 if(name.length<5)
{ ....}
}}
);
$("form").submit(
function(){
 var t = true;
switch(nameCheck)
{
case 0:
  t = false;
  $("#namewarning").text("....");
}if(!t)return false;
});
}
);
}