JavaWeb——JavaScript精讲之事件监听机制与表单校验案例实战
时间:2022-07-25
本文章向大家介绍JavaWeb——JavaScript精讲之事件监听机制与表单校验案例实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、事件监听机制概述
事件监听机制,指的是某些组件被执行了某种操作后,触发某些代码的执行。
- 事件:某些操作,如:单击、双击操作,键盘按下了,鼠标移动了。
- 事件源:组件,如按钮、文本输入框;
- 监听器:代码。
- 注册监听:将事件、事件源、监听器结合在一起,当事件源上发生了某个事件,则触发执行某个监听代码。
常见的事件:
- 1)点击事件:1、onclick:单击事件
- 2、ondbclick:双击事件
- 2)焦点事件:1、obblur:失去焦点,一般用于表单校验
- 2、onfocus:元素获得焦点
- 3)加载事件:1、onload:一张页面或一幅图像加载完成
- 4)鼠标事件:1、onmousedown:鼠标按钮被按下,定义方法时,定义一个形参接受event对象,event的属性可以获取鼠标哪个键被点击了(左键0,中键1,右键2) 2、onmousemove:鼠标被移动 3、onmouseout:鼠标从某元素移开 4、onmouseover:鼠标移到某元素之上 5、onmouseup:鼠标按钮被松开
- 5)键盘事件:1、onkeydown 某个键盘按键被按下 2、onkeypress 某个键盘按键被按下并松开 3、onkeyup 某个键盘按键被松开
- 6)选中和改变:1、onchange 域的内容被改变 2、onselect 文本被选中
- 7)表单事件:1、onsubmit 确认按钮被点击,方法返回false,则阻止表单提交 2、onreset 重置按钮被点击
【举例】基本事件示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>常见事件</title>
<script>
//onload加载完成事件
window.onload = function () {
/* //失去焦点事件
document.getElementById("username").onblur = function () {
alert("失去焦点");
}
//鼠标移动到元素之上事件
document.getElementById("username").onmouseover = function () {
alert("鼠标来了");
}*/
//鼠标点击事件
/* document.getElementById("username").onmousedown = function (event) {
// alert("鼠标点击");
alert(event.button);
}*/
/* //键盘点击事件
document.getElementById("username").onkeydown = function (event) {
// alert("鼠标点击");
if(event.keyCode==13){
alert("回车提交表单");
}
}*/
/* //改变事件
document.getElementById("city").onchange = function (event) {
alert("改变了");
}*/
/* //onsubmit事件
document.getElementById("form").onsubmit = function () {
//校验用户名格式
var flag = false;
return flag; //返回true,则正确提交表单
}*/
}
</script>
</head>
<body>
<form action="#" id="form">
<input type="text" name="username" id="username">
<select id="city">
<option>--请选择--</option>
<option>--北京--</option>
<option>--上海--</option>
</select>
<input type="submit" value="提交">
</form>
</body>
</html>
2、表单验证实战
在之前的用户登录博文代码的基础上,添加表单校验的内容,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单校验</title>
<style>
*{
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
body{
background: url("../image/6模糊背景.jpg") no-repeat center;
}
.rg_layout{
width: 900px;
height: 500px;
border: 8px solid #EEEEEE;
background: white;
margin: auto;
margin-top: 15px;
}
.rg_left{
/*border: 1px solid red;*/
float: left;
margin: 15px;
}
.rg_left > p :first-child{
color: FFD026;
font-size: 20px;
}
.rg_left > p :last-child{
color: grey;
font-size: 20px;
}
.rg_center{
/*border: 1px solid red;*/
float: left;
width: 500px;
margin-top: 20px;
margin-left: 80px;
}
.rg_right{
/*border: 1px solid red;*/
float: right;
margin: 15px;
}
.rg_right > p :first-child{
font-size: 10px;
}
.rg_right p a{
color: pink;
}
.td_left{
width: 100px;
height: 45px;
text-align: left;
}
.td_right{
padding-left: 20px;
}
.error{
color: red;
}
#username,#psd,#email,#name,#tel,#gender,#date,#code{
width: 251px;
height: 32px;
border: 1px solid #A6A6A6;
border-radius: 5px;
padding-left: 10px;
}
#code{
width: 110px;
}
#img_code{
height: 30px;
vertical-align: middle;
}
#btn_sub{
width: 150px;
height: 40px;
background: #FFD026;
border: 1px solid #FFD026;
}
</style>
<script>
/*
* 1、给表单绑定onsubmit事件,监听器中判断每一个方法校验的结构,如果都为true,则返回true,若有一个为false,则监听器返回false
* 2、定义一些方法分别校验各个表单项
* 3、给各个表单项绑定onblur事件
* */
window.onload = function () {
document.getElementById("form").onsubmit = function () {
//调用用户校验方法
//调用密码校验方法
return checkUsername() && checkPassword();
}
//给用户名和密码框分别绑定离焦事件
document.getElementById("username").onblur = checkUsername;
document.getElementById("psd").onblur = checkPassword;
}
function checkUsername() {
var username = document.getElementById("username").value;
var reg_username = /^w{6,12}$/;
var flag = reg_username.test(username);
var s_username = document.getElementById("s_username");
if(flag){
s_username.innerHTML = "<img src='../image/9正确.png' width='35' height='25'/>";
}else{
s_username.innerHTML = "用户名格式有误";
}
return flag;
}
function checkPassword() {
var psd = document.getElementById("psd").value;
var reg_psd = /^w{6,12}$/;
var flag = reg_psd.test(psd);
var s_psd = document.getElementById("s_password");
if(flag){
s_psd.innerHTML = "<img src='../image/9正确.png' width='35' height='25'/>";
}else{
s_psd.innerHTML = "密码格式有误";
}
return flag;
}
</script>
</head>
<body>
<div class="rg_layout">
<div class="rg_left">
<p>新用户注册</p>
<p>USER REGISTER</p>
</div>
<div class="rg_center">
<div class="rg_form">
<form action="#" method="post" id="form">
<table>
<tr>
<td class="td_left"><label for="username"> 用户名</label></td>
<td class="td_right">
<input type="text" name="uesrname" id="username" placeholder="请输入用户名">
<span id="s_username" class="error"></span>
</td>
</tr>
<tr>
<td class="td_left"><label for="psd"> 密码</label></td>
<td class="td_right">
<input type="password" name="psd" id="psd">
<span id="s_password" class="error"></span></td>
</tr>
<tr>
<td class="td_left"><label for="email"> email</label></td>
<td class="td_right"><input type="email" name="email" id="email"></td>
</tr>
<tr>
<td class="td_left"><label for="name"> 姓名</label></td>
<td class="td_right"><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td class="td_left"><label for="tel"> 手机号</label></td>
<td class="td_right"><input type="text" name="tel" id="tel"></td>
</tr>
<tr>
<td class="td_left"><label for="gender"> 性别</label></td>
<td class="td_right"><input type="radio" name="gender" value="male"> 男
<input type="radio" name="gender" value="female"> 女
</td>
</tr>
<tr>
<td class="td_left"><label for="date"> 出生日期</label></td>
<td class="td_right"><input type="date" name="date" id="date"></td>
</tr>
<tr>
<td class="td_left"><label for="code"> 验证码</label></td>
<td class="td_right"><input type="text" name="code" id="code">
<img id="img_code" src="../image/5验证码.png">
</td>
</tr>
<tr>
<td colspan="2" align="center"> <input id="btn_sub" type="submit" value="注册"></td>
</tr>
</table>
</form>
</div>
</div>
<div class="rg_right">
<p>已有账号? <a href="#">立即登录</a></p>
</div>
</div>
</body>
</html>
本文为博主原创文章,转载请注明出处。
- Java并发容器大合集
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- web.xml中load-on-startup的作用
- Java并发编程的艺术(七)——Executors
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- PowerDesigner使用教程|使用方法
- Java并发编程的艺术(一)——并发编程需要注意的问题
- 梯度下降法快速教程 | 第三章:学习率衰减因子(decay)的原理与Python实现
- Java并发编程的艺术(三)——volatile
- java学习手册-java 新手入门必看的30个题
- Java并发编程的艺术(五)——中断
- 简易的深度学习框架Keras代码解析与应用
- Java并发编程的艺术(六)——线程间的通信
- 轻量级线程池的实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- HashSet源码学习
- ConcurrentHashMap源码学习
- 线程池参数详解
- Thread源码解析
- ThreadPoolExecutor源码学习
- 实习第三周
- ABAP和JavaScript的懒加载,单例和桥接模式的实现和比较
- ExecutorCompletionService源码学习
- Erlang和RabbitMQ的windows环境配置
- ScheduledThreadPoolExecutor源码学习
- Github创建您的私服
- SAP BSP应用有状态和无状态行为差异比较
- Executors源码学习
- Java注解学习
- 使用ES5,ES6和SAP ABAP实现非波拉契数列Fibonacci