e.preventDefault()
以下のコードでは、必要に応じて複数回使用したことがわかります。
一度使用する方法を探していますe.preventDefault()
が、機能を以下のコードと同じに保ちます。
他のショートカットを機能させたいので、e.preventDefault()
後に配置するように言わないでください。ctrl
document.addEventListener("keydown", function(e) { // shortcuts
if (e.ctrlKey) { // Ctrl+
switch (e.keyCode) {
case 82: // R
e.preventDefault();
newDoc();
break;
case 79: // O
e.preventDefault();
openDoc();
break;
case 83: // S
e.preventDefault();
saveDoc();
break;
case 66: // B
e.preventDefault();
showHideStatusBar(statusBarOn ? false : true); // toggle
break;
case 191: // /
e.preventDefault();
alert("Welcome to " + appname + "!");
break;
}
}
if (e.keyCode == 9) { // tab
e.preventDefault();
var sStart = textarea.selectionStart,
text = textarea.value;
textarea.value = text.substring(0, sStart) + "\t" + text.substring(textarea.selectionEnd);
textarea.selectionEnd = sStart + 1;
}
});
最後にこれを得ました:
document.addEventListener("keydown", function(e) { // shortcuts
var key = {
"noctrl9": function() { // tab
var sStart = textarea.selectionStart,
text = textarea.value;
textarea.value = text.substring(0, sStart) + "\t" + text.substring(textarea.selectionEnd);
textarea.selectionEnd = sStart + 1;
},
66: function() { // B
showHideStatusBar(statusBarOn ? false : true); // toggle
},
79: openDoc, // O
82: newDoc, // R
83: saveDoc, // S
191: function() { // /
alert("Welcome to " + appname + "!");
}
}, fn = e.ctrlKey ? key[e.keyCode] : key["noctrl" + e.keyCode];
if (fn) {
e.preventDefault();
fn();
}
});