有一个表单,通过onchange验证表单的输入是否合法,如果合法,接下来就可以点一个按钮去提交。
我的验证方法是通过js+ajax调用php去数据库查询(查到了就可以)
可是这个方法要求用户一定要在点按钮之前激活这个onchange事件(比如点一下页面空白处)
如果用户添好表单没有点一下其他的地方,直接就去按按钮,就会onchange事件和这个按钮一起被激活。
结果是无论验证如何,这个按钮都工作了。
我想请问一下各位师兄,有啥好办法保证在点按钮前让用户的这个onchange事件确保被激活。
-----------------------------
本人土办法,用个屏障把按钮挡住,第一次点按钮时屏障取消,确保onchange完成验证,第二次点才是提交,自己也觉得土
谢谢各位师兄了。AjaxJavaScriptPHP数据库

解决方案 »

  1.   

    绑定 keyup和click事件,一个是键盘输入,另一个是右键复制。然后要设定定时器,大约500毫秒没操作就去ajax,有操作就取消定时器,重设一个。
      

  2.   

    把submit按钮改成button
    点击button后先检查合法性  合法再用js的submit方法提交试试   
      

  3.   

    可以写onsubmit事件,如果有远程验证就直接return false阻止提交,在该事件中验证所有需要验证的标签,远程验证通过的话再用代码提交表单类似:
    form1.onsubmit = function(){
        $.ajax({
            url:xx,
            success:function(res) {
                if(res==xxx) {
                    form1.right = true;
                    form1.submit();
                } else {
                    form1.right = false;
                }
            }
        });
        if(!form1.right) return false;
    }
      

  4.   

    其实只需要一个变量就搞定了
    onchange事件有条件的置位该变量
    按钮点击事件中先判别该变量是否置位
      

  5.   

    一般用jquery的话,可以这样绑定事件:
    $('input').bind('focus blur change paste keyup',function(){
        //验证数据合法性
    });
      

  6.   

    其实只需要一个变量就搞定了
    onchange事件有条件的置位该变量
    按钮点击事件中先判别该变量是否置位
    谢谢,这个变量我倒是想过,我描述的时候把问题简化了一些,其实我是有大约几十个输入的表单要验证,如果用变量,会有些不明朗您明白我的意思吗?
    再次感谢。
      

  7.   

    用 onpropertychange(oninput)事件行么