首先抱歉,我不知道该叫什么键(ENTER,F1,HOME等).
实际上,我正在创建一个输入搜索框,其中onkeyup调用一个函数.当用户输入至少两个键时,我的函数被调用,并且使用AJAX显示相关的搜索结果.问题是当用户按下箭头键,HOME,END等时,我的ajax也被调用,我不想要.并且当关注输入时按F5键重新加载页面不会重新加载页面,而是调用AJAX,这就是为什么它对我来说是个大问题.
$('input[name=\'search\']').on(keyup, function(e) {
if ($('input[name=\'search\']').val().length >= 2) {
// call ajax to display results..
}
});
Run Code Online (Sandbox Code Playgroud)
我想在其中添加一个额外的表达式if,用于检查是否按下了不可见的键.喜欢 -
if ($('input[name=\'search\']').val().length >= 2 && (EXPRESSION FOR VISIBLE KEYS)) {
// call ajax to display results..
}
Run Code Online (Sandbox Code Playgroud)
如果按下任何可见键,则调用ajax,否则不调用.
我不知道如何实现这一目标.因为我不能e.keycode == '65'为每个键做,如A,B,C,\,=,+,1,2,3等
是否有现成的库来检查这个或任何其他方式来做到这一点?请帮我.
我有另一个解决方案来检查是否按下了可见字符键。实际上,我在代码中使用的基本内容是,按下可见字符键将更改length输入字段的值。我使用keydown而不是在keyup按下当前键之前获取字符串的长度。看看我的代码 -
$('input[name=\'search\']').on('keydown', function() {
var orig_len = $('input[name=\'search\']').val().length; // this gets the original length just before the key was pressed
setTimeout(function() {
if ($('input[name=\'search\']').val().length >= 2 && $('input[name=\'search\']').val().length != orig_len) {
// my ajax call
}, 25);
/* in 25ms the lenght is updated and the if checks
whether length has changed from previous or not
because visible char key changes length
*/
});Run Code Online (Sandbox Code Playgroud)
这setTimeout是必要的,因为这 25 毫秒的运行时间足以在按下当前键后更新输入字段的长度。
请对此进行讨论,并告诉我这是否可以,或者是否会产生一些不良影响,或者可能会在不同的浏览器上引起问题,因为我还没有在其他浏览器上检查过。
更新:它在所有主要浏览器上功能齐全。它按照我想要的方式工作。
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |