SCRIPT5007:无法获取 属性 'keypress' 的值:对象为空或未定义

SCRIPT5007: Unable to get value of the property 'keypress': object is null or undefined

我正在尝试使用下面的 jQuery 代码在文本框的按键上执行一些代码,但出现错误。你能帮我一下吗?我什至尝试过 keydown 但面临同样的问题。

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
    <style>
        textarea.ex1 { background-color: white; width: 610px; height: 310px; overflow: Scroll; }
        #outer {  width:100%; text-align: center;} .inner { display: inline-block; }
        body { background-color: gray; }
    </style>
</head>
<body>
<textarea id="screen" class="ex1"></textarea>
<input type="text" id="command" style="width: 480px; height=600px;"/>
<script>
    $("#command").keydown(function(event){
        alert('Before keycode validation cond');
        var keycode = (event.keyCode ? event.keyCode : event.which);
        alert('After keycode validation');
        if(keycode == '13')
        {
            alert('ENTER key selected');
            $.get('Servlet3', function(response) {
                alert(response);
                appendResponse(response);
            });
            appendCommand();
        }
    });
    function appendCommand() {
        alert('appending command');
        document.getElementById('screen').textContent = document.getElementById('screen').textContent + document.getElementById('command').value;
    }
    function appendResponse(response) {
        alert('appending response');
        document.getElementById('screen').textContent = document.getElementById('screen').textContent + response;
    }
</script>

看起来您的代码运行良好。检查下面的 fiddle。我刚刚禁用了代码中的注释。

function onKeyDown(event) {
        //alert('Before keycode validation cond');
        var keycode = (event.keyCode ? event.keyCode : event.which);
        //alert('After keycode validation');
        if(keycode == '13')
        {
            //alert('ENTER key selected');
            $.get('Servlet3', function(response) {
                //alert(response);
                appendResponse(response);
            });
            appendCommand();
        }
    }
    if (window.addEventListener) {
            window.addEventListener("keydown", onKeyDown, true);
        } else if (document.attachEvent) { // IE 
            // alert(document); You can test this in IE
            document.attachEvent("onkeydown", onKeyDown);
        } else {
            document.addEventListener("keydown", onKeyDown, true);
        }
    function appendCommand() {
        //alert('appending command');
        document.getElementById('screen').textContent = document.getElementById('screen').textContent + document.getElementById('command').value;
    }
    function appendResponse(response) {
        //alert('appending response');
        document.getElementById('screen').textContent = document.getElementById('screen').textContent + response;
    }
textarea.ex1 { background-color: white; width: 610px; height: 310px; overflow: Scroll; }
        #outer {  width:100%; text-align: center;} .inner { display: inline-block; }
        body { background-color: gray; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="screen" class="ex1"></textarea>
<input type="text" id="command" style="width: 480px; height=600px;"/>

我无法使用 IE 9 浏览器,因此我尝试在 IE 11 浏览器中使用 文档模式 IE 9 进行测试。

您的代码在其中运行良好。这是测试结果。

如果您仍然遇到错误,那么我建议您升级到 IE 11 浏览器。 IE 9 版本太旧,目前不在支持范围内。