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)
您可以使用该onkeyup事件:
"
onkeyup事件处理程序捕获释放先前按下的键的时刻,同时焦点位于应用onkeyup属性的元素上."
在这种情况下:
<input type="text" onkeyup="checkNumber(document)" id="frm1" autocomplete="off">
Run Code Online (Sandbox Code Playgroud)
但请注意,保持标记(HTML)和脚本(JavaScript)分开总是更好.
相反,您可以使用addEventListener:
var el = document.getElementById("frm1");
el.addEventListener("keyup", checkNumber, false);
Run Code Online (Sandbox Code Playgroud)