テキストボックスがフォーカスされている間、Webページの更新を無効にしたいのですが、使用しているコードは次の場合を除いて他のショートカットに最適です。
ところで、私はこれをプレーンJavaScript、JQuery、JavaScriptフレームワークなしで実現したいと思っています。
document.onkeydown = keyDown //control chars
document.onkeypress = keyDown //any char/number
function keyDown(e) {
//74=j, 75=k, 78=n, 84=t
var forbiddenCtrlKeys = new Array(74,75,78, 84);
//37=left_arrow, 39=right_arrow
var forbiddenAltKeys = new Array(37,39);
//8=backspace, 116=F5
var forbiddenSingleKeys = new Array(8,116);
//per le textbox 116=F5
var forbiddenTextBoxKeys = new Array(116);
key = window.event.keyCode; //IE
if(window.event.ctrlKey){ //ctrl
isCtrl = true;
isAlt = false
checkVal(forbiddenCtrlKeys,window.event.keyCode);
}
else if(window.event.altKey){ //alt
isCtrl = false;
isAlt = true;
checkVal(forbiddenAltKeys,window.event.keyCode);
}
else{ //other
isCtrl = false;
isAlt = false;
var element = e.target.nodeName.toLowerCase();
var curr = document.activeElement
if(curr.tagName=="INPUT")
alert(curr.tagName);
if((element != 'input' && element != 'textarea') || $(e.target).attr("readonly")){
alert(window.event.keyCode);
checkVal(forbiddenSingleKeys,window.event.keyCode);
}
if(document.event.keyCode==116){
alert(window.event.keyCode);
document.event.keyCode=0;
checkVal(forbiddenTextBoxKeys,window.event.keyCode);
}
}
}
function checkVal(set,key){
for(i in set)
{
//case-insensitive comparison
if(String.fromCharCode(set[i]).toLowerCase() == String.fromCharCode(key).toLowerCase())
{
alert('This key combination has been disabled.');
window.event.returnValue = false;
window.event.keyCode = 0;
return true;
}
}
}
したがって、elseの場合に達成しようとしたのは、F5キーを押して無効にしようとしたが、機能しない場合は、洞察をいただければ幸いです。