我有一个搜索字段,收集查询并使用AJAX请求执行搜索。我无法找到完美的JavaScript事件来执行搜索。哪个事件用于搜索输入
oninput 使用oninput,AJAX请求被触发多次,一旦在输入字段中的每个字符。因此搜索 '123' 将执行三个AJAX请求:
- '1'
- '12'
- '123'
平变化 使用平变化是在更高效它只会触发一个AJAX请求,但它会强制用户从搜索字段更改焦点以触发。
是否有一个JavaScript事件,我可以使用两全其美?我在搜索时使用了1.5秒的超时延迟,以便用户有足够的时间输入搜索查询。理想情况下,我想使用一个类似于的JS事件,输入,不需要该字段失去焦点就会触发,但只对整个值触发一次,而不是输入字段中的每个字符触发一次。
也许答案是使用onchange事件并在1.5秒后自动失去焦点?这看起来很诡异,同时也引入了一个可用性问题,因为如果用户想要更改搜索查询,他们需要重新设置搜索字段的焦点。
您应该使用此处理程序中的超时来反弹输入事件 –
我们使用https://github.com/AOEpeople/deferred-event-callback进行去除,您可能需要试一试。 –
你应该使用'keypress'事件,看看这个答案关于“debouncing”与池ajax请求=> http://stackoverflow.com/questions/37105255/how-to-resolve-race-conditions-on-debounced -user-input/37154887#37154887 –