在不设置输入的情况下使用 onkeydown 或 onkeyup 触发功能 Javascript
use onkeydown or onkeyup to trigger a function without setting up an input Javascript
现在我有这个:
<form>
<input onkeydown='changeColor()'>
</form>
但是我可以在输入之外使用 onkeydown='changeColor()'
吗?所以用户什么都看不到,但当他们按下一个键时,会触发 changeColor 函数?
您可以将 'keydown' 和 'keyup' 事件与文档或 window 对象一起用于该目的。
有全局事件处理程序。还有一个用于按键,可以附加到 window 对象:
window.onkeypress = function(ev) {
myObject.dataLog += String.fromCharCode(ev.charCode);
}
更多信息请查看 documentation。
您可以使用 tabindex
属性设置可聚焦的元素。
然后,当它可聚焦时,您可以在其上设置 keydown 绑定。
当焦点在它上面并且你按下一个键时,它会触发事件处理程序。
function sayHello(){
console.log("HELLO!");
}
<div id="focusable" tabindex=0 onkeydown='sayHello()'>
A DIV
</div>
几乎(从 HTML5
开始,任何元素都可以获得 tabindex
属性),您可以将键盘事件附加到任何 HTML
元素。使用 tabindex
属性,您可以使元素可聚焦,因此,它将接受键盘事件。
var els = document.querySelectorAll('.focusable'), l = els.length, c = 0;
for(; c < l; c++) {
els[c].addEventListener('keydown', function(e) {
this.style.backgroundColor = (this.style.backgroundColor == 'green') ? 'white':'green';
console.log('Keydown event on element with ID = ' + e.target.id);
});
}
/* just for this demo */
.focusable {
width: 300px;
height: 300px;
border: 2px solid red;
line-height: 300px;
text-align: center;
margin: 5px auto;
}
<div id="div1" class="focusable" tabindex="0">Press a key</div>
<div id="div2" class="focusable" tabindex="0">Press a key</div>
<div id="div3" class="focusable" tabindex="0">Press a key</div>
<div id="div4" class="focusable" tabindex="0">Press a key</div>
关于tabindex
属性的一句话
tabindex
属性允许通过 TAB
键访问元素,有些元素即使没有指定 tabindex
属性也有这种行为,例如 input
元素。 .
tabindex
属性只接受数值。举例说明:
tabindex="X"
:这里的"X"表示正数。随着 "X" 的值变大,元素在 TAB
的可访问性方面失去了优先级,因此,tabindex="1"
是 thea 第一,与其他元素相比,它具有更高的优先级。
tabindex="0"
:推荐值,当按下 TAB
键时,您可以保留页面中元素的顺序。
tabindex="-1"
:这样,您可以通过 TAB
键使元素不可访问,但可以通过编程方式使其可聚焦(当您想要制作可以关闭的模态弹出窗口时很有用使用 ESC
键)。
现在我有这个:
<form>
<input onkeydown='changeColor()'>
</form>
但是我可以在输入之外使用 onkeydown='changeColor()'
吗?所以用户什么都看不到,但当他们按下一个键时,会触发 changeColor 函数?
您可以将 'keydown' 和 'keyup' 事件与文档或 window 对象一起用于该目的。
有全局事件处理程序。还有一个用于按键,可以附加到 window 对象:
window.onkeypress = function(ev) {
myObject.dataLog += String.fromCharCode(ev.charCode);
}
更多信息请查看 documentation。
您可以使用 tabindex
属性设置可聚焦的元素。
然后,当它可聚焦时,您可以在其上设置 keydown 绑定。
当焦点在它上面并且你按下一个键时,它会触发事件处理程序。
function sayHello(){
console.log("HELLO!");
}
<div id="focusable" tabindex=0 onkeydown='sayHello()'>
A DIV
</div>
几乎(从 HTML5
开始,任何元素都可以获得 tabindex
属性),您可以将键盘事件附加到任何 HTML
元素。使用 tabindex
属性,您可以使元素可聚焦,因此,它将接受键盘事件。
var els = document.querySelectorAll('.focusable'), l = els.length, c = 0;
for(; c < l; c++) {
els[c].addEventListener('keydown', function(e) {
this.style.backgroundColor = (this.style.backgroundColor == 'green') ? 'white':'green';
console.log('Keydown event on element with ID = ' + e.target.id);
});
}
/* just for this demo */
.focusable {
width: 300px;
height: 300px;
border: 2px solid red;
line-height: 300px;
text-align: center;
margin: 5px auto;
}
<div id="div1" class="focusable" tabindex="0">Press a key</div>
<div id="div2" class="focusable" tabindex="0">Press a key</div>
<div id="div3" class="focusable" tabindex="0">Press a key</div>
<div id="div4" class="focusable" tabindex="0">Press a key</div>
关于tabindex
属性的一句话
tabindex
属性允许通过 TAB
键访问元素,有些元素即使没有指定 tabindex
属性也有这种行为,例如 input
元素。 .
tabindex
属性只接受数值。举例说明:
tabindex="X"
:这里的"X"表示正数。随着 "X" 的值变大,元素在 TAB
的可访问性方面失去了优先级,因此,tabindex="1"
是 thea 第一,与其他元素相比,它具有更高的优先级。
tabindex="0"
:推荐值,当按下 TAB
键时,您可以保留页面中元素的顺序。
tabindex="-1"
:这样,您可以通过 TAB
键使元素不可访问,但可以通过编程方式使其可聚焦(当您想要制作可以关闭的模态弹出窗口时很有用使用 ESC
键)。