[英]JavaScript “Live” form validation
每当用户单击用户名或密码输入字段并退出而不输入时,我都试图获得警报。 但是,在使用“ 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>
我希望用户名输入显示警报,如果用户单击该警报并将其切换到下一个字段而不输入任何数据。
如果您使用焦点事件来检查输入的有效性,那么除非预先填充值,否则警报将不断出现。
使用模糊事件onblur
而不是onfocus
。
<td><input name="username" id="userName" type="text" onblur="userNameCheck();"></input></td>
演示版
<body> <form name="myForm"> <table> <tr> <td>Username:</td> <td><input name="username" id="userName" type="text" onblur="userNameCheck();"></input> </td> </tr> <tr> <td>Password:</td> <td><input name="password" id="password" type="password"></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.length >= 1) { //Nothing happens } else { alert("User Name cannot be blank"); return false; } } </script> </body>
为什么不创建自己的“警报” div以获得更多控制(和更好的用户体验) 。
$("input").focus(function(){
var x = document.forms["myForm"]["password"].value;
if (x == "") {
/*alert("Password cannot be blank");*/
$('.alert').show();
return false;
}
});
并指定选项卡键方案,请尝试:
function checkTabPress(key_val) {
if (event.keyCode == 9) {
$('.alert').hide();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.