【发布时间】:2012-09-13 08:40:25
【问题描述】:
我正在验证一个名为客户端代码的唯一性...
我为此使用了 onkeyup JS 事件。 但是当我快速键入键时它不能正常工作。关于这个
onkeyup 事件
我正在发送一个ajax请求来检查输入的数据是否已经存在于表中。
如果有任何替代方案,请提供帮助..
【问题讨论】:
标签: php javascript unique onkeyup
我正在验证一个名为客户端代码的唯一性...
我为此使用了 onkeyup JS 事件。 但是当我快速键入键时它不能正常工作。关于这个
onkeyup 事件
我正在发送一个ajax请求来检查输入的数据是否已经存在于表中。
如果有任何替代方案,请提供帮助..
【问题讨论】:
标签: php javascript unique onkeyup
就您似乎面临的实际问题而言,您的问题相当模糊。但是我从中得出的结论是,当您建议快速按键时,您发出了太多请求!
如您所知,Ajax 就像一个普通的页面请求,只是异步完成的,因此它受到相同的网络延迟、吞吐量和往返限制。
实现所需功能的一种简洁方法是使用一种称为节流的技术。用于此目的的最佳js 插件之一位于:http://benalman.com/projects/jquery-throttle-debounce-plugin/
它基本上允许您对对服务器的请求进行速率限制,从而不会阻塞资源并提供流畅的 UI。
此外,除非您希望捕获某些特殊键,例如 ESC,否则我建议使用 keypress 或 keydown 事件。具体原因不记得了,只是一个建议。
【讨论】:
我认为主要问题是,AJAX 需要一些时间。因此,如果您的用户输入非常快,您将向您的服务器发送许多请求,并且您会得到许多实际上不需要的答案。
一种可能的解决方案是,您在事件中设置超时。例如等到用户大约 500 毫秒左右没有输入字母。在此之后,您将请求发送到服务器。
你的要求会少一些,而且你的要求也不能混为一谈……
【讨论】:
使用onkeydown 事件并检查event.charCode。即使在快速连续按下打字时也会触发。
【讨论】: