我尝试将其用于一个简单的热键功能,该功能会对某些键的按键做出反应,但如果您在具有给定 ID 的框中进行编辑,则不会。不幸的是,现在热键总是被禁用。我一直收到 alert() :(
文本字段在例如http://tyrant.40in.net/kg/news.php?id=160#comments
在文本区域内它可以工作,但我的脚本无法识别,无论我是在文本区域内还是在外部(单击文本区域并单击外部也无济于事)。
请帮我。
我还尝试通过选择 (!$('#tfta_1 #search')) 而不是 $('html') 以另一种方式来执行此操作,这样当您使用这些 ID 时,热键将不起作用。不幸的是,这并没有起作用。
编辑:js还必须检查crtl、alt、shift以避免解释
// Hotkeys (listen to keyboard input)
$('html').keypress(
function(event){
// is cursor at the beginning / end of edit box
var textInput = document.getElementById("tfta_1"), val = textInput.value;
var isAtStart = false, isAtEnd = false;
if (typeof textInput.selectionStart == "number") {
// Non-IE browsers
isAtStart = (textInput.selectionStart == 0);
isAtEnd = (textInput.selectionEnd == val.length);
} else if (document.selection && document.selection.createRange) {
// IE branch
textInput.focus();
var selRange = document.selection.createRange();
var inputRange = textInput.createTextRange();
var inputSelRange = inputRange.duplicate();
inputSelRange.moveToBookmark(selRange.getBookmark());
isAtStart = inputSelRange.compareEndPoints("StartToStart", inputRange) == 0;
isAtEnd = inputSelRange.compareEndPoints("EndToEnd", inputRange) == 0;
}
// combine information -> is cursor in edit box?
var eb = isAtStart + isAtEnd;
// if in comment box
if ( eb ) {
// do nothing
alert('You are in the comment box');
}
// if key 'p' is pressed
else if (event.which == 112){
// open profile page
window.location = home + 'profile.php';
}
// if key 'q' is pressed
else if (event.which == 113){
// open quests overview
window.location = home + 'quests.php';
}
// if key 'r' is pressed
else if (event.which == 114){
// open raids overview
window.location = home + 'raids.php';
}
// if key 'f' is pressed
else if (event.which == 102){
// open fraction tracker
window.location = home + 'factiontracker.php';
}
}
);