在IE浏览器中使用JavaScript禁用退格键和删除键

13

请问有谁知道如何使用Javascript禁用IE浏览器中的退格键和删除键?以下是我的代码,似乎在Mozilla中可以正常工作,但在IE中无效。

onkeydown="return isNumberKey(event,this)"

function isNumberKey(evt, obj)
{

    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode == 8 || charCode == 46) return false;

    return true;
}

我会建议先阅读关于OnKeyUp/onKeyDown事件以及事件对象成员的资料。这应该为您提供所需的所有数据。 - Itay Moav -Malimovka
4个回答

13

这个事件处理程序适用于所有主流浏览器。

function onkeyup(e) {
    var code;
    if (!e) var e = window.event; // some browsers don't pass e, so get it from the window
    if (e.keyCode) code = e.keyCode; // some browsers use e.keyCode
    else if (e.which) code = e.which;  // others use e.which

    if (code == 8 || code == 46)
        return false;
}

您可以将事件附加到此函数,如下所示:
<input onkeyup="return onkeyup()" />

应该在 onkeydown 中,而不是在 onkeyup 中。 - Bipin

5

根据@JoeCoder的评论和我的回答已经过时,我进行了修订。

document.querySelector([text input element]).onkeydown = checkKey;
function checkKey(e) {
    e = e || event;
    return !([8, 46].indexOf(e.which || e.keyCode || e.charCode) > -1);
}

另请参阅这个 jsFiddle


嗯,我非常确定我已经在所有主流浏览器(IE、FF、Safari、Chrome、Opera)中使用了该事件附加功能。 - Joel
我在jsFiddle(http://jsfiddle.net/x9tnxqLt/2/)上尝试了这段代码,但无法在IE11、Firefox 35或Chrome 40中使其正常工作。 它拦截keyup事件并获取代码,但即使返回false,当按下backspace或delete键时浏览器仍会删除输入中的字符。Joel Potter的代码也无法正常工作。 - EricP
一个比较老的答案:jsfiddle @ http://jsfiddle.net/KooiInc/9r6bvaLd/ 可能会更好。 - KooiInc

3

这段代码取消了退格键的操作。

window.onkeydown = function (event) {

    if (event.which == 8) { 

         event.preventDefault();   // turn off browser transition to the previous page 

                 // put here code you need 

        }; 

};      

2
$(document).keydown(function(e) {
    if (e.keyCode === 8) {
        var element = e.target.nodeName.toLowerCase();
        if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly")) {
            return false;
        }
    }
}); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接