ajax表单验证提交问题, check()函数该怎么写,f1()函数该怎么设置返回true/flase,求高手指点?
functionf1(){varxhr=getXhr();varusername=$F("username");//2.指定发送方式地址发送请求open(提交方式,提交地...
function f1(){
var xhr = getXhr();
var username =$F("username");
//2. 指定发送方式 地址 发送请求 open(提交方式,提交地址,是否异步(true/false));
xhr.open("get","check?username="+username,true);
// 3.注册监听函数
// 服务器将数据响应回来后 执行函数
xhr.onreadystatechange=function (){
if(xhr.readyState==4){
var info = xhr.responseText;
if(info=="true"){
$("username_msg").innerHTML="用户名可以使用";
}
else{
$("username_msg").innerHTML="用户名不可以使用";
}
}else{
$("username_msg").innerHTML="正在验证中。。。。";
}
};
// 4.发送
xhr.send(null);
}
</script>
</head>
<body>
<fieldset>
<form action="mean.jsp" method="post" onsubmit="return check()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="username" name="username" onblur="f1();"/>
<span id="username_msg" style="color: red;"></span>
</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="pwd" name="pwd"/></td>
</tr>
<tr>
<td><input type="submit" id="s" name="submit" value="提交"/></td>
<td><input type="reset" id="r" name="preset" value="重置"/></td>
</tr>
</table>
</form>
</fieldset>
</body>
</html> 展开
var xhr = getXhr();
var username =$F("username");
//2. 指定发送方式 地址 发送请求 open(提交方式,提交地址,是否异步(true/false));
xhr.open("get","check?username="+username,true);
// 3.注册监听函数
// 服务器将数据响应回来后 执行函数
xhr.onreadystatechange=function (){
if(xhr.readyState==4){
var info = xhr.responseText;
if(info=="true"){
$("username_msg").innerHTML="用户名可以使用";
}
else{
$("username_msg").innerHTML="用户名不可以使用";
}
}else{
$("username_msg").innerHTML="正在验证中。。。。";
}
};
// 4.发送
xhr.send(null);
}
</script>
</head>
<body>
<fieldset>
<form action="mean.jsp" method="post" onsubmit="return check()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="username" name="username" onblur="f1();"/>
<span id="username_msg" style="color: red;"></span>
</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="pwd" name="pwd"/></td>
</tr>
<tr>
<td><input type="submit" id="s" name="submit" value="提交"/></td>
<td><input type="reset" id="r" name="preset" value="重置"/></td>
</tr>
</table>
</form>
</fieldset>
</body>
</html> 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
1个回答
展开全部
var isPass=false; //当所有验证全部通过时,这儿为true
function f1(){
var xhr = getXhr();
var username =$F("username");
//2. 指定发送方式 地址 发送请求 open(提交方式,提交地址,是否异步(true/false));
xhr.open("get","check?username="+username,true);
// 3.注册监听函数
// 服务器将数据响应回来后 执行函数
xhr.onreadystatechange=function (){
if(xhr.readyState==4){
var info = xhr.responseText;
if(info=="true"){
$("username_msg").innerHTML="用户名可以使用";
if(isPass)
{
//提交表单 或 调用表单提交函数
document.forms[0].submit();
}
}
else{
$("username_msg").innerHTML="用户名不可以使用";
}
}else{
$("username_msg").innerHTML="正在验证中。。。。";
}
};
// 4.发送
xhr.send(null);
}
function check()
{
isPass=true;
f1();
return false;
}
异步函数反回值是没什么用的,你可以验证完所执行回调函数
不要把提交按扭的名称设成 submit
function f1(){
var xhr = getXhr();
var username =$F("username");
//2. 指定发送方式 地址 发送请求 open(提交方式,提交地址,是否异步(true/false));
xhr.open("get","check?username="+username,true);
// 3.注册监听函数
// 服务器将数据响应回来后 执行函数
xhr.onreadystatechange=function (){
if(xhr.readyState==4){
var info = xhr.responseText;
if(info=="true"){
$("username_msg").innerHTML="用户名可以使用";
if(isPass)
{
//提交表单 或 调用表单提交函数
document.forms[0].submit();
}
}
else{
$("username_msg").innerHTML="用户名不可以使用";
}
}else{
$("username_msg").innerHTML="正在验证中。。。。";
}
};
// 4.发送
xhr.send(null);
}
function check()
{
isPass=true;
f1();
return false;
}
异步函数反回值是没什么用的,你可以验证完所执行回调函数
不要把提交按扭的名称设成 submit
追问
谢谢,问题已解决,不过有个小bug,就是第一次输入不能提交的值,点击提交,它不会提交,但是如果在原有值上再添加一个值(就是例如原本是"wang",添加一个"q",变为"wangq"),不点击提交按钮,就移开点击一下别处,它就自动提交,是什么情况?
追答
我不清楚,你新代码长什么样子~,根据你的描述,有点像是检测通过就自动提交了~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询