我想使用一些字母(键)作为 javascript 中某些操作的快捷方式。我想检查光标是否集中在任何文本字段、表单输入等上,以便在用户在表单或文本字段中输入内容时取消快捷操作。
例如,我希望在用户按下“A”时执行 alert()。但是如果用户在像'A website'这样的文本区域中输入一些文本,那么他将按下'A',这一次不应该执行alert()。
我想使用一些字母(键)作为 javascript 中某些操作的快捷方式。我想检查光标是否集中在任何文本字段、表单输入等上,以便在用户在表单或文本字段中输入内容时取消快捷操作。
例如,我希望在用户按下“A”时执行 alert()。但是如果用户在像'A website'这样的文本区域中输入一些文本,那么他将按下'A',这一次不应该执行alert()。
$(document).keydown( function( e ) {
if( e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA" ) return;
if( e.target.isContentEditable ) return;
// Do stuff
}
window.onkeydown = function(e){
if ( e.target.nodeName == 'INPUT' ) return;
handle_shortcut();
};
jQuery
$(window).bind('keydown',function(e){
if(e.target.nodeName.toLowerCase() === 'input'){
return;
}
alert('a');
});
或者纯js
window.onkeydown = function(e){
if(e.target.nodeName.toLowerCase() === 'input'){
return;
}
alert('a');
};
除此之外,您可以做的是定义一个非警报元素类型的数组,soinput
等textarea
,然后检查这些元素当前都不是目标。
演示:http: //jsfiddle.net/7F3JH/
您可以根据当前页面上的焦点元素绑定和取消绑定快捷方式事件。
JavaScript
window.onload = initWindow();
function initWindow () {
attachShortcutHandler();
var inputs = document.getElementsByTagName('input');
for (var i = 0, max = inputs.length; i < max; i++) {
inputs[i].onfocus = removeShortcutHandler;
intputs[i].onblur = attachShortcutHandler;
}
}
function removeShortcutHandler () {
window.onkeypress = null;
}
function attachShortcutHandler() {
window.onkeypress = function () {
//your code here
}
}
jQuery
$(function () {
initShortcutHandler();
$('input, [any other element you want]')
.on('focus', function () {
$('body').off('keypress');
})
.on('blur', function () {
initShortcutHandler();
});
});
function initShortcutHandler() {
$('body').on('keypress', function () {
//do your stuff
});
}
您需要将标志设为全局。并在任何文本框具有焦点时将其设置为 false。
变量标志=真;
$('input:type="text").focus(function(txt) { flag= false; });
if(flag) //快捷键有效...
最好使用 JQuery 中定义的 focusOut 方法。根据我的理解,你可以做这样的事情
$("input").focusout(function() {
if($(this).val() == "A"{
alert("your message");
return false;
}else{
//do other processing here.
}
});
希望这可以帮助 :)
jQuery鼠标悬停()
$('element').mouseover(function() {
alert('over');
});