日期:2014-05-16  浏览次数:20305 次

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

------解决方案--------------------
绑定 keyup和click事件,一个是键盘输入,另一个是右键复制。然后要设定定时器,大约500毫秒没操作就去ajax,有操作就取消定时器,重设一个。
------解决方案--------------------
把submit按钮改成button
点击button后先检查合法性  合法再用js的submit方法提交试试   
------解决方案--------------------
onblur事件
------解决方案--------------------
可以写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;
}
------解决方案--------------------
引用:
本人土办法,用个屏障把按钮挡住,第一次点按钮时屏障取消,确保onchange完成验证,第二次点才是提交,自己也觉得土

其实只需要一个变量就搞定了
onchange事件有条件的置位该变量
按钮点击事件中先判别该变量是否置位
------解决方案--------------------
引用:
可以写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;
}


ajax少了async:false参数