1. <!DOCTYPE html>
2. <html>
3.     <head>
4.         <meta charset="UTF-8">
5.         <meta name="viewport" content="width=device-width, initial-scale=1.0">
6.         <meta http-equiv="X-UA-Compatible" content="ie=edge">
7.         <title>表单事件</title>
8.         <style>
9.
10.         </style>
11.     </head>
12.     <body>
13.         <form action="">
14.             <input type="text" name="" value="">
15.             <input type="submit" value="提交">
16.             <input type="reset" value="重置/清空数据">
17.         </form>
18.         <script>
19.             var input = document.querySelector('input[type=text]')
20.             input.addEventListener('focusin',function(){
21.                 // focusin获取焦点的时候触发
22.                 console.log('focusin')
23.             })
24.             input.addEventListener('focus',function(){
25.                 // focus获取焦点的时候触发
26.                 console.log('focus')
27.             })
28.
29.             input.addEventListener('focusout',function(){
30.                 console.log('focusout')
31.             })
32.             input.addEventListener('blur',function(){
33.                 console.log('blur')
34.             })
35.
36.             // focus/blur 支持较好
37.             // 而focusin和focusout 支持不好(调用顺序不同)
38.             // focus 指的是获取输入焦点
39.             // blur 输入焦点离开
40.
41.             input.addEventListener('change',function(){
42.                 console.log('change')
43.             })
44.             // 文本框失去焦点检查内容 如果内容发生了变化则触发change事件
45.             // 如果希望在输入时立即检查则应使用其他方式
46.
47.             input.addEventListener('select',function(){
48.                 console.log('selectd')
49.             })
50.             // 选择输入框内的文本时触发
51.
52.             document.forms[0].addEventListener('submit',function(e){
53.                 if(input.value.length>0){
54.                     alert('可以提交')
55.                 }
56.                 else{
57.                     alert('请输入')
58.                     e.preventDefault()
59.                     // 阻止默认事件
60.                 }
61.             })
62.             // submit指表单提交之前 可以在这个事件中检查用户的输入是否合适
63.             // 如果不合适则可以使用 event 的 preventDefaul() 来阻止表单提交
64.
65.             document.forms[0].addEventListener('reset',function(e){
66.                 if(confirm('确定清空表单内容吗?')){
67.                     // confirm弹出一个确认框 确认框有两个按钮
68.                     // 点确定时confirm会返回true
69.                     // 点取消时confirm会返回false
70.                 }
71.                 else{
72.                     e.preventDefault()
73.                     // 可以阻止表单被清空
74.                 }
75.             })
76.         </script>
77.     </body>
78. </html>