繁体   English   中英

无法使用事件监听器阻止键

[英]Can't block keys using event listener

<body id="body" runat="server" onkeydown="return showKeyCode(event)">

现在,每当我按下一个键时,IE8(或在comp模式下)都会引发一个异常,导致第x行出现问题,而这恰好是我的body标签。 我怎么能防止这种情况? 据我所知,JS代码应与IE comp配合使用。 (适用于Chrome浏览器)此外,该代码不适用于IE和Firefox(不阻止F5和Enter)

->预期对象

var version = navigator.appVersion;

function showKeyCode(e) {
    var keycode = (window.event) ? event.keyCode : e.keyCode;

    if ((version.indexOf('MSIE') != -1)) {
        if (keycode == 13) {
            event.keyCode = 0;
            event.returnValue = false;
            return false;
        }
    }
    else {
        if (keycode == 13) {
            return false;
        }
    }
}

我面临的另一个问题是IE和FF中的这个简单JS(可在Chrome中运行):

什么也没发生&->预期对象

 <a onclick="ClearTextboxes();" title="Close" id="close" runat="server">Close</a>

....in script tags:
 function ClearTextboxes() {
     document.getElementById('<%= txtbox_name.ClientID %>').value = '';
     document.getElementById('<%= txtbox_email.ClientID %>').value = '';
     document.getElementById('<%= txtbox_content.ClientID %>').value = '';
     document.getElementById('<%= ResultMail.ClientID %>').style.display = 'none';

 }

showKeyCode函数中有很多不必要的代码。 以下内容也一样。 您已经保证,由于在主体的onkeydown属性中传递event的方式, e将引用键事件对象,并且根本不需要任何浏览器嗅探。 如果使用DOM0密钥处理程序,则return false是防止浏览器默认操作的正确方法,因此无需e.returnValue

阻止F5会遇到问题,除非有充分的理由,否则您还是不应该这样做,因为用户已经习惯F5来执行页面刷新。 如果将函数更改为以下内容,则没有理由不阻止Enter键的默认操作:

function showKeyCode(e) {
    if (e.keyCode == 13) {
        return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM