<form action="1.jsp">
<input type="text" id="tel" flag="0"/>
<input type="text" id="email" flag="0"/>
<input type="submit" value="提交" />
</form>
<script>
$('#tel,#email').blur(function(){
var _this=this;
$.ajax({
type:'POST',
url:'',
//async:false,
dataType:'text',
//data:'',
success:function(data){
if(data==true){
$(_this).attr('flag',1)
}
}
});
});
$('form').submit(function(){
var isSubmit=true;
var input=$('input:text');
for(var i=0; i<input.length;i++){
input.eq(i).blur(); //点击提交 重新做一次验证
if(input.eq(i).attr('flag')==0){
isSubmit=false;
}
}
alert(isSubmit);
return isSubmit;
});
</script>
代码如上,点击“提交”,所有输入框做一次ajax验证,如果都返回true,则提交表单;
如果不注释掉:async:false 没问题,但注释掉后,因为是异步传输,submit的时flag值还没来得及返回,所以都为false
表单提交不了
求:如果选择默认的async:true 该怎么判断,然后提交
解决方案 »
- 获取上个td 中的innerText的值
- hongmei85在帮看看fs2.nsns[0],fs1.nsns[1],fs.nsns[0]搜中文是乱码怎么解决,要求其他3个正常的能用gb2312搜索
- js问题求解
- setTimeout小问题
- 这个怎么写啊~~,急~~在线等~~
- 全选后,单击其中一个,全选按钮取消对钩
- Javascript怎样打开WinForm程序?
- 这里老是提示ibSpan为空或不是对象,为啥?
- 如何用JSCRIPT响应active控件事件
- 真的没人能够解决我的问题吗?我还以为CSDN上的人有多NIU!唉!
- javascript动态添加表格
- js父窗口调用子窗口的attchEvent方法?在线等 急
http://jqapi.com/#p=deferred.done
--------------
<form action="1.jsp" onsubmit="validCheck(this);">
你到validCheck里把文本框遍历一遍不就ok?何必要AJAX呢?
然后我点浏览器的“后退”按钮,返回到刚才的页面,除了password其他的输入框内容都会保留上次填写的
这个时候我输入个密码 如果不ajax,又可以提交了!
现在不要这样...
username="zhangsan"
if 他是合法用户 then
session("username")=username
response.cookies("username")=username
'..............
else
'.............
end if
所以,在他后退以后再次提交的时候,你只要判断session("username")不为空,就不让他提交表单就OK了;
----------------
至于email的可用性的问题,你不应该放在表单提交的时候进行,应该在下面红字处进行验证
<input type="text" id="email" flag="0" onblur="myajax()" />
每个success+1直到等于你需要验证的数目跳出while提交
不过这样Email又回到上面那个问题了:用户注册成功后 点击浏览器“后退”,回到注册页,这时,除了Password
其他的输入框还都保留刚才填过的信息, 这个时候输入个密码,点submit 就无法验证了
或者怎么能让,用户点“后退”时 清空所有输入框的内容
1、不要在提交页面的时候才去做AJAX的事情,这个时候当然有异步问题出现。比如email验证,你应该在该文本框失去焦点的时候就去AJAX到后台,验证输入的email是不是可用;
<input type="text" id="email" flag="0" onblur="emailChk(this.value)" />
2、类似email可用性验证这些外围的东东处理掉以后,才可点提交按钮提交表单。此时的
<form action="1.jsp" onsubmit="return validCheck(this);">只是常规检查,看看是否为空等。3、关于history.back()返回的问题,你可以在提交后的页面用location的replace(好像是这个,记不清了;你自己查查)来清除前页的记忆;但最可靠的还是在validCheck()里用session("username")是否为空来判断:
<script>
function validCheck(f){
if('<%=session("username")%>'!=""){
alert('别乱搞,你已经登录了')
return false;
}
//这里是常规检查.................
} function emailChk(s){
//ajax......
}
</script>
var sucNum = 0;//已成功返回的ajax个数,初始为0
function(){
....... //你的其他代码
success:function(){
sucNum++;//每成功返回一个ajax就加次
}
}
function submit(){
var n=5;///这个是你的所有ajax个数,假设你有5个ajax需要返回值才能提交
while(sucNum!=n){
//等着吧,ajax还有没返回的呢
}
//都返回了,可以提交了
}