键盘监听
Js Keyboard listening
我的目标是当你键入搜索栏会弹出下面的代码是工作的,但我有一个问题,而键入不同的输入,例如评论输入js听,并打开搜索栏。是否有可能当我已经在一个不同的输入字段,搜索将不会弹出并显示。
<style>
#searchBar { display: none; -webkit-transition: width 2s; /* Safari */ transition: width 2s;}
.search { width: 250px; height: 20px; }
</style>
<script>
window.onload = function() {
var listen = /^[a-z0-9]+$/i;
var searchInput = document.getElementById('searchInput');
var searchBar = document.getElementById('searchBar');
if ( window.addEventListener )
window.addEventListener( 'keyup', insertKey, false);
function insertKey( e ) {
// Get the character from e.keyCode
var key = String.fromCharCode( e.keyCode ).toLowerCase();
// Match the character
if( key.match(listen) ) {
// Change display: none; to display: block;
searchBar.style.display = "block";
// Append every new character
searchInput.value += key;
// Focus on input
searchInput.focus();
// Since you focused on the input you don't need to listen for keyup anymore.
window.removeEventListener( 'keyup', insertKey );
// I didn't tested with jQuery
// $('#searchBar').fadeIn();
// $('#searchBar input').append(keys);
// $('#searchBar input').focus();
}
}
};
</script>
当您为keyup
事件添加一个事件侦听器到window
时,它将在检测到keyup
时触发,无论它来自何处。你对你正在听的事件没有足够的歧视。
一种解决方案是将事件侦听器直接添加到input
元素中,这样来自一个元素的keyup
就不会触发另一个元素的侦听器:
document.getElementById("searchInput").addEventListener("keyup", searchInputKeyHandler);
document.getElementById("commentInput").addEventListener("keyup", commentInputKeyHandler);
// etc.
这工作,但有点奇怪。如果您所做的只是监听用户在input
HTML元素中键入的内容,那么更好的监听事件是input
,它会在input
元素的值发生变化时触发。
document.getElementById("searchInput").addEventListener("input", searchInputKeyHandler);
document.getElementById("commentInput").addEventListener("input", commentInputKeyHandler);
// etc.
一些元素也可以监听change
事件;做一些研究,看看什么事件最适合你的用例。
相关文章:
- 如何在AngularJS中监听点击事件,而不是触摸事件
- BackboneJS-监听嵌套的模型更改
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 监听touchend有时会触发移动点击事件
- 使用ajax的Django jquery.如何让jquery监听id's生成的表单
- JQuery监听点击并使用点击元素发出警报's href
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- 如何让Google Maps API v3监听dragend事件并在投递时填充表单字段
- 如何在angular js中监听dom就绪事件
- Phonegap:监听页面并关闭InAppBrowser返回index.html的简单方法
- React鼠标事件在没有监听它们的组件上触发
- 监听发布到网站的广告的新网址
- 我应该使用什么模式在 Node/JavaScript 中制作监听机器人
- 监听电子应用程序外部的键盘事件和鼠标移动
- 如何在Javascript/Sencha中监听键盘打开/关闭
- HTML:监听输入的所有更改,而不仅仅是键盘驱动的更改
- 键盘监听
- 如何在Processing.js中的update()中监听键盘输入
- JS-键盘事件-监听/取消监听
- Javascript如何监听键盘快捷键