提交表单用AJAX判断用户名是否注册过的问题 不要用submit按钮,用一个普通的<input type="button" />在点击的时候,调用ajax,如果用户可用 ,就使用document.getElementById("form的id").submit(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function ValidateUser(userlogin,tempvalue){ xmlHttp=GetXmlHttpObject(); xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ if(xmlHttp.responseText!="OK"){ alert('用户名已注册,请重新注册!'); return; } }} script type="text/javascript">function $(obj){return document.getElementById(obj)}function regForm(obj){if(obj.user.value==""){ alert("请输入您的用户名!"); obj.user.focus(); return false;}//前面已经判断过了,就不用再if了if(ValidateUser('userlogin',obj.user.value)){ alert('用户名已注册,请重新注册!'); return false;//处理过程不要放在函数里面,放在这外面一层};if(obj.email.value==""){ alert("请重复输入您的邮件地址!"); obj.email.focus(); return false;}}var xmlHttpfunction ValidateUser(userlogin,tempvalue){ xmlHttp=GetXmlHttpObject(); xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ if(xmlHttp.responseText!="OK"){ return false; } }} xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true); xmlHttp.send(null);}</script> 如果用户名存在 就把input的button设置为不可用button.disabled=true; 由于ajax是异步的,在其后执行的代码并不会等待ajax运行后的结果出现才判断是否执行,而是一直会执行下去,所以你在if(xmlHttp.readyState==4){}里面用return false或者return true是没有用的。所有的逻辑过程需要写在这个if(xmlHttp.readyState==4){}里面才行。也就是说,在ajax运行结束后,判断是否需要执行下去,如果需要继续添加用户,则在这个if(xmlHttp.readyState==4){}里面调用提交用户的函数才可以。 <script type="text/javascript">function $(obj){return document.getElementById(obj)}function regForm(obj){if(obj.user.value==""){ alert("请输入您的用户名!");obj.user.focus();return false;}else{ if(ValidateUser('userlogin',obj.user.value)){ 提交按钮.disabled=""; }else{ 提交按钮.disabled="true"; }}if(obj.email.value==""){alert("请重复输入您的邮件地址!");obj.email.focus();return false;}}var xmlHttpfunction ValidateUser(userlogin,tempvalue){ xmlHttp=GetXmlHttpObject(); xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ if(xmlHttp.responseText!="OK"){ alert('用户名已注册,请重新注册!'); return false; } }} xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true); xmlHttp.send(null);}</script> 为什么这么做呢??先在页面上设置一个隐藏域可以用焦点事件啊。当失去焦点的时候,用ajax返回一个true or false然后进行判断,当为true时,显示这个隐藏域,清空输入框,同时返回焦点。、 xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),false); 这样改一下试试, 异步模式运行ajax,可以先让提交按钮disable,等到异步通过了再enable. jqueryeasyui中的datagrid如何实现横向排版 extjs菜鸟请教一个问题 如何用JQuery实现网页DIV拖动跟其他DIV互换位置 图片滚动 JSP 全局变量 |zyciis| 怎么我也搞不好的问题 如何让一个图片动态加载一张图片,而原有的gif图片不定格 谢谢 src的动态取地址,如何做? 我怎么控制图片变动的时间呀 帮我看看,这段代码该怎样写? EasyUI Dialog 脚本样式的问题 在逐层次获取 range对象的父对象 的时候 出现了错误 marquees在Firefox下为什么没反应?
xmlHttp=GetXmlHttpObject();
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if(xmlHttp.responseText!="OK"){
alert('用户名已注册,请重新注册!');
return;
}
}
}
function $(obj){return document.getElementById(obj)}
function regForm(obj){
if(obj.user.value==""){
alert("请输入您的用户名!");
obj.user.focus();
return false;
}//前面已经判断过了,就不用再if了if(ValidateUser('userlogin',obj.user.value)){
alert('用户名已注册,请重新注册!');
return false;//处理过程不要放在函数里面,放在这外面一层
};if(obj.email.value==""){
alert("请重复输入您的邮件地址!");
obj.email.focus();
return false;}
}var xmlHttp
function ValidateUser(userlogin,tempvalue){
xmlHttp=GetXmlHttpObject();
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if(xmlHttp.responseText!="OK"){
return false;
}
}
}
xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true);
xmlHttp.send(null);
}</script>
button.disabled=true;
也就是说,在ajax运行结束后,判断是否需要执行下去,如果需要继续添加用户,则在这个if(xmlHttp.readyState==4){}里面调用提交用户的函数才可以。
function $(obj){return document.getElementById(obj)}
function regForm(obj){
if(obj.user.value==""){
alert("请输入您的用户名!");obj.user.focus();return false;
}else{
if(ValidateUser('userlogin',obj.user.value)){
提交按钮.disabled="";
}else{
提交按钮.disabled="true";
}
}
if(obj.email.value==""){alert("请重复输入您的邮件地址!");obj.email.focus();return false;}}var xmlHttp
function ValidateUser(userlogin,tempvalue){
xmlHttp=GetXmlHttpObject();
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if(xmlHttp.responseText!="OK"){
alert('用户名已注册,请重新注册!');
return false;
}
}
}
xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true);
xmlHttp.send(null);
}</script>
可以用焦点事件啊。当失去焦点的时候,用ajax返回一个true or false
然后进行判断,当为true时,显示这个隐藏域,清空输入框,同时返回焦点。、