JavaScript中的文本输入行为中的Onchange事件,以便在键入时立即注册更改?

Pet*_*nov 1 html javascript function method-call dom-events

我希望能够在不点击,而光标仍然在文本字段中闪烁的页面上或检查按钮注册从文本字段ID =的frm1网页中的变化.我目前正在使用onchange事件,它显然没有注册更改,直到我单击文本字段.此外,任何关于代码质量/更好/其他方式的建议将不胜感激.我也想知道为什么元素[0]的值是未定义的.我是JavaScript的初学者,谢谢.

 // JavaScript source file Operator.js

function checkNumber(document) {
    var formNumber = document.getElementById("problem1");
    var txt = "even";
    var number = formNumber.elements[1].value;
    if (number % 2 == 0) {
        txt = "even";
    } else {
        txt = "odd";
    }
    document.getElementById("Result").innerHTML = txt;
}
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>HmwkOperators</title>
    <script src="Operators.js" type="text/javascript"></script>
</head>
<body>
    <form id="problem1" action="form_action.asp">
        <fieldset>
            <legend>Problem1 verify number if it is odd:</legend>
            Number: <input type="text" onchange="checkNumber(document)" id="frm1" autocomplete="off"><br>
            <p id="Result"></p>
            <input type="button" value="Check" onclick="document.Result.reload(true)">
        </fieldset>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

dsg*_*fin 5

您可以使用该onkeyup事件:

" onkeyup事件处理程序捕获释放先前按下的键的时刻,同时焦点位于应用onkeyup属性的元素上."

在这种情况下:

<input type="text" onkeyup="checkNumber(document)" id="frm1" autocomplete="off">
Run Code Online (Sandbox Code Playgroud)

jsFiddle在这里


但请注意,保持标记(HTML)和脚本(JavaScript)分开总是更好.

相反,您可以使用addEventListener:

var el = document.getElementById("frm1");
el.addEventListener("keyup", checkNumber, false);
Run Code Online (Sandbox Code Playgroud)

jsFiddle在这里