Disable specific function key using jquery

倾然丶 夕夏残阳落幕 提交于 2019-12-01 12:38:07
mplungjan

Like this Disable F5 key in Safari 4

but using keyCode 119:

<script>
var fn = function (e)
{

    if (!e)
        var e = window.event;

    var keycode = e.keyCode;
    if (e.which)
        keycode = e.which;

    var src = e.srcElement;
    if (e.target)
        src = e.target;    

    // 119 = F8
    if (119 == keycode)
    {
    alert('nope')
        // Firefox and other non IE browsers
        if (e.preventDefault)
        {
            e.preventDefault();
            e.stopPropagation();
        }
        // Internet Explorer
        else if (e.keyCode)
        {
            e.keyCode = 0;
            e.returnValue = false;
            e.cancelBubble = true;
        }

        return false;
    }
}
document.onkeypress=document.onkeydown=document.onkeyup=fn
</script>

Have you tried something like this?

$(document).keydown(function(e){
    if(e.which === 119){
        return false;
    }
});

i created a jsfiddle sandbox where you can test it (works):

http://jsfiddle.net/alzclarke/yW6H3/

The following code works on most browser whereas I haven't found any incompatible one yet. Let me know if it doesn't work.

The key is to re-map target event to any other original event of trivial key, i.e., make that Fn key behave as normal key.

$(document).bind("keydown", function (evt){ 
    var keycode = (evt.keyCode?evt.keyCode:evt.charCode);
    //alert(keycode);
    switch(keycode){
        case 119: //F8 key on Windows and most browsers
        case 63243:  //F8 key on Mac Safari
            evt.preventDefault();                                 
            //Remapping event
            evt.originalEvent.keyCode = 0;
            return false;
            break;
    }
});

Reference on key code and explanation on cross browser issue can be found here: quirksmode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!