function testFile(fId){ //验证图片用于注册时
var fileValue = document.getElementById(fId);
var str = fileValue.value.toLowerCase();
var imgType = "";//返回哪一个文件类型不符合要求
//alert("fId = "+fId);如果注释这行,就会出现显示提示信息一闪而过(反之正常)
if (str.length>0){
var test_last = str.substring(str.lastIndexOf("."));
if (test_last == ".jpg" || test_last == ".gif" || test_last == ".png") {
document.getElementById("basic_msg_msg").innerHTML="<span style='color: green'>&nbsp;</span>";
testPreviewPicture("register",fId);
return true;
} else {
switch(fId){
case "businessLicensePath":
imgType = "公司营业执照";
break;
case "taxLicencePath":
imgType = "公司税务登记证";
break;
default:
imgType = "组织机构代码证";
break;
}
document.getElementById("basic_msg_msg").innerHTML="<span style='color: red'>"+imgType+"文件必须为.jpg/.gif/.png格式!</span>";
return false;
}
}
}谁有遇到过类似问题,请各位前辈指点,这里注释alert("fId = "+fId);就会出现显示内容一闪而过的现象,而不注释就不会出现这种情况

解决方案 »

  1.   

    我把 testPreviewPicture("register",fId)这个注释了,然后测试了下可以,会不会是这个方法的问题?
      

  2.   

    多谢个位,这个问题解决了,是因为在验证图片时会先去验证输入的用户名是否在数据库中已存在(是异步验证),然后才会验证图片格式,而在验证用户名时,而验证用户名时要经过后台。而验证图片是在前台,这两个效率有很大差距,在验证图片时,错误提示已显示出来了,而在这之前,验证用户名还没有结束(即使验证用户名在前),而在验证用户名时,就对提示信息做了清空的动作,所以错误提示一闪而过;而为什么把alert("fId = "+fId);加上就好了。我想大家也看出来了,弹出这个提示框后,后面的JS代码就不会运行了,而验证用户名的过程仍在进行,在我点击弹出框的确定按钮前,验证用户名的过程已结束,也就是清空错误提示的动作已结束,所以后面在有错误提示就不会补清空了。解决方法,去掉验证用户名那里的清空错误提示代码。再次多谢大家的回贴,散分。