我想实现的功能是这样的,利用ajax的异步请求在提交表单之前实现对一个输入框中数据的验证,期待实现的效果是点击提交按钮,如果输入数据符合要求,就提交表单。但是现在实现的效果是点击提交按钮,在校验输入数据符合要求后,还需要再点击一次才能提交表单。
代码如下:
jsp:
< form action="formaction.action" method="post" onsubmit="return formsubmit()">
< input type="submit" value="提交表单">< /form>
js:
function formsubmit(){
var xmlhttp;
xmlhttp=ajaxfun();
var datavalue=document.getElementById("data").value;
var url="datacheckaction?data="+datavalue+"&time="+(new Date().getTime());
xmlhttp.open("post",url,true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send(null);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("spandata").innerHTML=xmlhttp.responseText;
}
}
}
if(document.getElementById("spandata").innerHTML==""){
return true;
}else{
return false;
}
}
这个xmlhttp.responseText测试了没问题,数据校验通过是个"",校验不通过是个"wrong"。。。
用span和alert测试了几次,也有一些想法但是很快就都否定了,不知道问题在哪里。。。
忘记补充一点,有一个想法是这样的。。spandata这个地方在jsp页面上的初始值有,是"此项不可为空",我觉得最有可能的问题是formsubmit()这个函数的最后几行,判断spandata是否为空是在得到异步请求结果之前,应该是这样。。。但是不知道怎么解决