2 haonanzhuchegmingzhi haonanzhuchegmingzhi 于 2015.07.09 14:02 提问

js焦点定位BUG怎么处理?

我有两个文本框用JS代码写的,触发onblur事件作验证处理,另一个也是。。现在我发现一个问题,就是第一个文本框输入完成后,验证不通过得到焦点,因为异步发送AJAX需要时间去数据库查询,而失去焦点的动作是我点击的第二个文本框,所以这问题就操蛋了,当点击第二个文本框后,第一个文本框异步发送请求返回的结果才返回回来,不通过第一个文本框要得到焦点,可是第二个文本框也有角发的事件呀,他不通过也要得到焦点,然后。。。大神们应该懂的,这怎么处理?我看网上说延时?还有其他更简单的方法吗

2个回答

showbo
showbo   Ds   Rxr 2015.07.09 14:12

你设置一个变量记录第二个是否已经获取焦点,获取焦点你第一个就不要再抢焦点罗。。

showbo
showbo 回复JAVA之孙: 那你提示就有好了,不要获取焦点,修改下input的样式变为红色边框什么的。我的这个思路也是而已的,只是控件blur的时候设置变量为false,其他控件获取焦点时设置变量为true,回调里面判断下变量不为true就获取焦点
2 年多之前 回复
haonanzhuchegmingzhi
haonanzhuchegmingzhi 这个我是这样做的,实际上我的文本框有十多个,如果我是点的第三个或者第四个文本框呢?这样判断不太科学呀
2 年多之前 回复
Unkown_Answer
Unkown_Answer   2015.07.09 14:34

你的构思就有问题,验证应该先在前台验证,form表单提交后再在后台对数据进行校验(目的是为了防止在地址栏中直接注入),ajax主要是拿来验证“验证码”。

Unkown_Answer
Unkown_Answer 回复JAVA之孙: 我见过大部分的的注册或者登陆页面都木有抢焦点,不过你非要这么做的话建议你加一个空判断,如果当前的input的value是空值就不让焦点被抢走。(表示你这个逻辑真的很牵强,几乎是费功夫还没啥用的判断,用户体验也没有变好多少)
2 年多之前 回复
haonanzhuchegmingzhi
haonanzhuchegmingzhi 是的,我的第一个是用户名注册,我要异步发送到数据库验证是否注册,触发事件是onblur,当我用户名输入完成后,点第二个文本框,这里第一个文本框便失去焦点执行异步发送,同时第二个文本框也得到了焦点。不是这样吗?我们注册的时候不是输入完第一个文本框马上进入第二个文本框填写?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片