JavaScript中的键盘事件为什么失效?

发布网友 发布时间:2022-04-25 13:09

我来回答

3个回答

热心网友 时间:2022-04-23 22:33

两个错误:

1、use、pass这两个变量要设为全局的,在下面的函数中才会有效;

2、onkeydown和onclick要用全小写,不要用驼峰写法。

下面是改过后的代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>键盘事件实验</title>

<script type="text/javascript">

var use,pass

window.onload = function() {

use = document.getElementById("user");

pass = document.getElementById("pass");

var denglu = document.getElementById("denglu");

use.onkeydown = key1;

pass.onkeydown = key2;

denglu.onclick = wang;

}

function key1() {

if(window.event.keyCode == 13){

pass.focus();

}

}

function key2() {

if(window.event.keyCode == 13){

wang();

}

}

function wang() {

var id = use.value;

var word = pass.value;

if(id == ""){

alert("用户名不能为空!");

use.focus();

}

else if(word == ""){

alert("密码不能为空!");

pass.focus();

}

else{

alert("开始验证登陆,请稍后...");

}

}

</script>

</head>

<body>

<h2>请按下回车键提交用户名和密码</h2>

用户名:<input type="text" id="user" /><br/><br/><br/>

密 码:<input type="password" id="pass" /><br/><br/>

<input type="button" id="denglu" value="登录" /><br/>

</body>

</html>

热心网友 时间:2022-04-23 23:51

解决方案一:

window.onload = function() {
var use = document.getElementById("user");
var pass = document.getElementById("pass");
var denglu = document.getElementById("denglu");
use.onkeydown = key1(pass);
pass.onKeydown = key2(use, pass);
denglu.onClick = wang(use, pass);
};
function key1(pass) {
document.onkeydown = function(event){
if(event.keyCode == 13){
pass.focus();
}
};
}
function key2(use, pass) {
document.onkeydown = function(event){
if(event.keyCode == 13){
wang(use, pass);
}
};
}
function wang(use, pass) {
var id = use.value;
var word = pass.value;
if(id == ""){
alert("用户名不能为空!");
use.focus();
}
else if(word == ""){
alert("密码不能为空!");
pass.focus();
}
else{
alert("开始验证登陆,请稍后...");
}
}

解决方案二:

window.onload = function() {

var use = document.getElementById("user");

var pass = document.getElementById("pass");

var denglu = document.getElementById("denglu");

use.onkeydown = key1();

pass.onKeydown = key2();

denglu.onClick = wang();

function key1() {

document.onkeydown = function(event){

if(event.keyCode == 13){

pass.focus();

}

};

}

function key2() {

document.onkeydown = function(event){

if(event.keyCode == 13){

wang();

}

};

}

function wang() {

var id = use.value;

var word = pass.value;

if(id == ""){

alert("用户名不能为空!");

use.focus();

}

else if(word == ""){

alert("密码不能为空!");

pass.focus();

}

else{

alert("开始验证登陆,请稍后...");

}

}

};追问大神想问一下为什么原来的不行呢,而且很奇怪的事第一个键盘事件可以而第二个就不可以,必须把所有的代码放到window.onload里面的函数吗

追答不全部放onload里就需要像我给的方案一一样,需要传递参数。
方案二就是放里面就不需要传参数

热心网友 时间:2022-04-24 01:25

我把代码CV下来运行了一下,发现怎么点都没有反应哎

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com