百思不得其解,只有靠这里的弟兄们了!
有一个表单,通过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事件有条件的置位该变量
按钮点击事件中先判别该变量是否置位
------解决方案--------------------
ajax少了async:false参数