【发布时间】:2023-04-02 09:20:01
【问题描述】:
每当用户单击用户名或密码输入字段并在未输入的情况下退出时,我都会尝试获取警报。但是,在使用“onblur”而不是“onfocus”后,我可以让它工作(感谢 Gurvinder 在下面的回答)。现在,当我使用“onfocus”在表单外单击时,警报似乎对这两个字段都有效。但是,当我使用 Tab 键从用户名字段到密码字段访问密码字段时,“passwordCheck”功能会继续运行。请帮忙。
<!DOCTYPE html>
<html>
<head>
<title>Javascript exercises</title>
<meta charset="UTF-8">
</head>
<body>
<form name="myForm" >
<table>
<tr>
<td>Username:</td>
<td><input name="username" id="userName" type="text" onfocus="userNameCheck();"></input></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" id ="password" type="password" onfocus="passwordCheck();"></input></td>
</tr>
<tr>
<td></td>
<td><input type="Button" value="Submit"></input></td>
</tr>
</table>
</form>
<script>
//User name field validator - Alert a message for empty input fields
var userNameCheck = function() {
if(document.myForm.username.value == ""){
alert("User Name cannot be blank");
}
else{
return false;
}
}
//password field validator - Alert a message for empty input fields
var passwordCheck = function() {
if(document.myForm.password.value == ""){
alert("Password cannot be blank");
}
else{
return false;
}
}
</script>
</body>
</html>
【问题讨论】:
-
不要显示警报,因为这真的很烦人。只需使用 HTML5 模式属性来测试输入是否为空。如果是,输入将显示为红色以提醒用户。
[a-z-A-Z0-9]{1}之类的东西会检查是否存在至少一个字符。 -
为什么不直接选择感兴趣的元素呢? document.getElementById("username") 而不是 document.myForm.username.length 啊,也许你的 onfocus 甚至没有被调用......对吧?
-
注意,
<input>元素是自动关闭的
标签: javascript html forms validation