【发布时间】:2018-04-24 13:55:29
【问题描述】:
我正在为我的第一个注册表单的用户检查功能而苦苦挣扎。在这种情况下,我无法确定哪个更好:onKeyup 或 onBlur。
我的代码使用 ajax 动态检查数据库中是否存在用户名(在提交表单之前)。
我的主要担忧是:
使用 onKeyup: 如果有人输入:'John' 警报会立即弹出并说它已被占用,但也许我们的访问者试图输入 ' JohnDoe' 并且从不想注册 'John'。这样,每个用户都可以通过简单的单词猜测/输入任何内容来找到许多已经使用的用户名。这让我很困扰,因为这似乎是一个很大的安全风险。
使用 onBlur:如果有人输入“John”并走得更远(点击离开),警报会立即弹出并说用户名已被占用。没关系,但正常的用户反应是:输入另一个名称并等待。 (点击不是很明显)。这样用户每次都需要点击退出才能看到当前的结果。我认为这真的很烦人(而且绝对不是哑巴)
哪个更好?你用哪一个?或者有没有比这两个更好的选择来进行用户友好的“动态”用户存在检查?
谢谢!
【问题讨论】:
-
两者都不是。使用
input。如果我使用鼠标复制内容,您最初提到的任何事件都不会触发。 -
这是一个非常基于意见的问题,所以不是一个真正合适的问题,但请考虑使用“去抖动”,以便在用户停止输入一段时间后,它会执行检查。
-
我还建议您可能想多了。无论如何,您似乎担心有人会发现什么是公共信息。如果您想阻止有人抓取您的网站,请实施某种形式的限速逻辑,以阻止单个(或一组)IP 地址向您的网站发出大量请求。
-
我个人认为另一个问题是你告诉用户用户名被占用的方法;一个警报。警报非常具有破坏性。靠近输入框的简单消息,可选择在框上更改彩色边框,不仅会通知用户用户名已被使用,而且破坏性要小得多。
-
感谢大家的意见/信息,这在很多方面真的很有帮助! @Taplar:幸运的是,我的警报框不是基本的 javascript“alert()”框,它只是一个基于 div 的小工具提示,在输入字段下弹出警报。但是感谢您指出这一点!
标签: javascript jquery forms on-the-fly