onKeyup或onBlur更适合检查用户名存在?

时间:2018-04-24 13:55:30

标签: javascript jquery forms username on-the-fly

我正在努力使用我的第一个注册表单的用户检查功能。在这种情况下,我无法确定哪一个更好: onKeyup onBlur

我的代码使用ajax动态检查数据库中的用户名(在提交表单之前)。

我主要担心的是

使用onKeyup:如果有人输入:' John '警告立即弹出并说已经拍摄,但也许我们的访问者试图输入' John Doe '并且从未想过使用' John '注册。这样,每个用户都可以通过简单的单词猜测/输入任何内容来找到许多已经占用的用户名。这让我感到困扰,因为它似乎是一个很大的安全风险。

使用onBlur :如果有人输入“ John ”并进一步(点击了),则会立即弹出警报并说明用户名已被占用。没关系,但正常的用户反应是:键入其他名称并等待。 (单击出来并不是很明显)。这样,用户每次都需要点击以查看当前结果。我认为这真的很烦人(绝对不是傻瓜)

哪一个更好?你用哪一个?或者是否有比这两个更好的选项来使用户友好的“即时”用户存在检查?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这在很大程度上取决于个人偏好。我不会过分担心暴露用户名的存在。无论采用何种方法,总会有一种方法可以通过反复提交表单或反复模糊输入来找出已存在的名称。

从可用性的角度来看,我认为模糊要求并不明显,正如您所提到的那样。我会采用keyup方法,因为它允许用户根据即时反馈快速更改其用户名。

然后,对每个按键执行GET查询会导致竞争条件,在触发后续击键后可能会返回对击键的响应。因此,在发送新的AJAX请求之前,请务必取消或完成任何先前的AJAX请求。这可以使用AJAX队列完成。

取消之前的请求也有助于防止您提到的暴力用户名抓取方案,因为恶意用户必须等待每个请求完成才能输入新角色。考虑到网络延迟,暴力攻击方法在获取大量用户名方面不会取得太大成功。