<form>
    <label>邮箱:</label><input type="text" value="" id="email" />
    <label>手机:</label><input type="text" value="" id="tel" />
    <input type="submit" value="注册" />
</form>邮箱和手机都需要ajax 从后台返回值flag,用以判断是否已经被注册,如果已被注册则不能提交表单!用的是query ajax
问题:
直接点击“注册“按钮的时候,需要重新验证一下所有输入框,所有flag都为true的时候执行submit
    但由于ajax用的是async:true 异步传输,返回flag的success函数要等到submit之后才会执行,
    所以提交时flag每次都取不到值
    虽然可以设置async:false 同步传输,但是同步传输在success没执行前,后面的JS就执行不了,有弊端!
    
求解决办法或是新的判断思路,THX

解决方案 »

  1.   

    submit 函数在 验证是否已被注册函数执行完成后,再去执行submit函数 就可以了关键还是异步的问题,提交注册必须等到验证完成后进行注册提交操作其实你不用分两步走的,只要提交一次即可,如果已被注册则返回提示被注册了,没被注册,那么直接进行注册就ok了
      

  2.   

    $("input[type=submit]").click(function(){
        var form = this.form;    $.ajax({
            success: function(flag){
                if(flag) form.submit();
                //else do something
            }
        });    return false;
    });
    这样行么
      

  3.   


    如果把submit函数写在 success中 会有一个情况就是:
    当最后一输入框onblur时 所有的flag都为true了 这时表单就自动提交了 不需要点击“提交”按钮
      

  4.   

    " 当最后一输入框onblur时 所有的flag都为true了 这时表单就自动提交了 不需要点击“提交”按钮 "你说的这个,是需求,还是bug ?
      

  5.   


    BUG啊  如果把submit函数放到success里 就会这样 因为input的onblur会调用success的