Jag har ett ganska bra fungerade javascript som sniffar onkeypress events och gör smarta saker med navigeringen beroende på vilka knappkombinationer man trycker. Till viss del försöker jag "kopiera" vad Gmail kan göra.
Nu funkar det faktiskt rätt så bra i både FF och IE. Det är bara ett stort problem kvar, så fort jag sätter focusen (med musen) i en input eller en textarea så kan jag inget skriva eftersom allt snappas upp av detta ovannämnda skript. Effekten är att jag inte kan skriva in nått i formulären.
...och dessa funktioner, disableKeyboardShortcuts() och enableKeyboardShortcuts() skulle då helt enkelt "toggla" en switch som för en stund tar bort min onkeypress event funktion. Problemet med denna lösning är att den är opraktisk för mig. Jag har massivs med olika formulär att då skriva om och göra ännu stökigare än vad de redan är. Finns det ingen bättre/smidigare lösning på detta enkla problem?
function disableKeyboardShortcuts(e){
e = e || window.event;
if (typeof e.cancelBubble == "boolean"){
e.cancelBubble = true;
} else if (e.stopPropagation){
e.stopPropagation();
}
}
...onkeypress="disableKeyboardShortcuts(event)"...
function disableKeyboardShortcuts(e){
e = e || window.event;
if (typeof e.cancelBubble == "boolean"){
e.cancelBubble = true;
} else if (e.stopPropagation){
e.stopPropagation();
}
}
...onkeypress="disableKeyboardShortcuts(event)"...
Fast jag trodde att han ville slippa joxa med alla form-element?
Då föreslår jag att han använder onkeypress istället för onfocus/-blur. Så med din kod som utgångspunkt skulle det bli:
window.onload=function(){
els = [document.getElementsByTagName("INPUT"), document.getElementsByTagName("TEXTAREA")];
for (i=0; i<els.length; i++)
for (j=0; j<els[b][ i ][/b].length; j++){
els[i][j].onkeypress = function(e){
e = e || window.event;
if (e.stopPropagation){
e.stopPropagation();
} else if (typeof e.cancelBubble == "boolean"){
e.cancelBubble = true;
}
}
}
}