Day5 JavaScript(三)事件、表单验证以及初识jQuery

事件

1)鼠标事件

mousedown

mouseup

2)键盘事件

a) keydown:键被按下

b) keyup:键抬起

c) keypress:按下可打印字符的键时。

document.onkeydown = function(ev){
    if(ev.keyCode == 13){
        console.log("提交");
    }
}

3)焦点事件

a) 获取焦点:focus

b)失去焦点:blur

4)其他事件

a) change:选择发生改变触发事件(单选,多选,select)

b) select:选择(下拉)

简单实例:省市联动

//1.数据模拟
var arr = new Array();
arr["北京市"]=["海淀区","昌平区","崇文区"];
arr["上海市"]=["闵行区","徐汇区","松江区"];
arr["重庆市"]=["北碚区","随便去"];

//2.设置省份值
var province = document.getElementsByName("province")[0];
for(var i in arr){
    //option   value   内容区
    //创建option
    var option = new Option(i,i);
    //添加到province
    province.appendChild(option);
}

//3.设置城市
var city = document.getElementsByName("city")[0];
//获取选择的省份
province.onchange = function(){
    var cities = arr[this.value];
    //清空
    city.options.length=1;
    for(var i in cities){
        var option = new Option(cities[i],cities[i]);
        city.appendChild(option);
    }
}
            

 表单验证

1)什么是表单验证

前台验证。请求未发出之前进行的校验。

2)为什么使用表单验证

a)  减轻服务器压力

b)  保证数据安全

c)  提升用户体验

3) 如何实现表单验证

1.阻止默认提交   onsubmit   return false;

2.验证表单项(失焦事件)   onblur

正则表达式

弥补字符串验证的局限性。简洁。

符号表示

符号

描述

/…/

代表一个模式的开始和结束

^

匹配字符串的开始

$

匹配字符串的结束

\s

任何空白字符

\S

任何非空白字符

\d

匹配一个数字字符,等价于[0-9]

\D

除了数字之外的任何字符,等价于[^0-9]

\w

匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]

.

除了换行符之外的任意字符

符号

描述

{n}

匹配前一项n次

{n,}

匹配前一项n次,或者多次

{n,m}

匹配前一项至少n次,但是不能超过m次

*

匹配前一项0次或多次,等价于{0,}

+

匹配前一项1次或多次,等价于{1,}

匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

 

校验方式

a) str.match(regex)

返回值为null为不满足规范。

b)regex.test(str)

验证通过为true;否则为false。

简单示例:表单提交

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title></title>
  6         <script type="text/javascript">
  7             var userPass = false;
  8             var pwdPass = false;
  9             var repwdPass = false;
 10             var mailPass = false;
 11             
 12             function regUser(ele){
 13                 var val = ele.value;
 14                 var nextSpan = ele.nextElementSibling;
 15                 var reg = /^\w{6,20}$/;
 16                 console.log(reg.test(val));
 17                 if(reg.test(val)){
 18                     nextSpan.innerHTML = "用户名符合要求";
 19                     nextSpan.style.color="greenyellow";
 20                     userPass = true;            
 21                 }else{
 22                     nextSpan.innerHTML = "用户名不符合要求";
 23                     nextSpan.style.color="red";
 24                     userPass = false;
 25                 }
 26             }
 27             
 28             function regPwd(ele){
 29                 var val = ele.value;
 30                 var nextSpan = ele.nextElementSibling;
 31                 var reg = /^\w{8}$/;
 32                 if(reg.test(val)){
 33                     nextSpan.innerHTML = "密码符合要求";
 34                     nextSpan.style.color="greenyellow";
 35                     pwdPass = true;
 36                 }else{
 37                     nextSpan.innerHTML = "密码不符合要求";
 38                     nextSpan.style.color="red";
 39                     pwdPass = false;
 40                 }
 41             }
 42             
 43             function regRePwd(ele){
 44                 var val = ele.value;
 45                 var pwd = document.getElementById("pwd").value;
 46                 var nextSpan = ele.nextElementSibling;
 47                 if(val != pwd){
 48                     nextSpan.innerHTML = "密码不一致";
 49                     nextSpan.style.color="red";
 50                     repwdPass = false;
 51                 }else{
 52                     nextSpan.innerHTML = "密码一致";
 53                     nextSpan.style.color="greenyellow";
 54                     repwdPass = true;
 55                 }
 56             }
 57             
 58             function regMail(ele){
 59                 var val = ele.value;
 60                 var reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
 61                 var nextSpan = ele.nextElementSibling;
 62                 if(reg.test(val)){
 63                     nextSpan.innerHTML = "邮箱格式正确";
 64                     nextSpan.style.color = "greenyellow";
 65                     mailPass = true;
 66                 }else{
 67                     nextSpan.innerHTML = "邮箱格式不正确";
 68                     nextSpan.style.color = "red";
 69                     mailPass = false;
 70                 }
 71             }
 72             
 73             function regSub(){
 74                 return userPass&&pwdPass&&repwdPass&&mailPass;
 75             }
 76             
 77         </script>
 78         <style>
 79             #register{
 80                 width: 1000px;
 81                 float: left;
 82             }
 83             form{
 84                 float: left;
 85                 margin-left: 20px;
 86             }
 87             .txt{
 88                 margin-left: 10px;
 89             
 90             }
 91             .beforeTxt{
 92                 float: left;
 93                 width: 72px;
 94             }
 95         </style>
 96     </head>
 97     <body>
 98         <div id="register">
 99         <form action="#" method="get" onsubmit="return regSub()">
100             <p>
101                 <div class="beforeTxt">用户名:</div>
102                 <input type="text" onblur="regUser(this)" name="user" class="txt" />
103                 <span>*用户名长度为6~20位</span>
104             </p>
105             <p>
106                 <div class="beforeTxt">密码:</div>
107                 <input type="password" id="pwd" name="pwd" onblur="regPwd(this)" class="txt" />
108                 <span>*密码长度最少为8位</span>    
109             </p>
110             <p>
111                 <div class="beforeTxt">确认密码:</div>
112                 <input type="password" onblur="regRePwd(this)" class="txt" />
113                 <span>*密码长度最少为8位</span>    
114             </p>
115             <p>
116                 <div class="beforeTxt">邮箱:</div>
117                 <input type="text" onblur="regMail(this)" class="txt" />
118                 <span>*邮箱格式必须正确</span>    
119             </p>
120             <p><input type="submit" value="注册" " /></p>
121         </form>
122         </div>
123     </body>
124 </html>
View Code

简单示例:简易计算器 

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>计算器</title>
  6         
  7         <script type="text/javascript">
  8             window.onload = function(){
  9                 var divs = document.getElementsByClassName("clickBlock");
 10                 var oInput = document.getElementsByTagName("input")[0];
 11                 var str="";
 12                 for(var i in divs){
 13                     divs[i].onmousedown = function(){                    
 14                         this.style.background="red";
 15                         if(this.innerHTML ==="="){
 16                             str = eval(str);
 17                             console.log(str);
 18                             oInput.value = str;
 19                         }else{
 20                             str += this.innerHTML;
 21                             oInput.value = str;
 22                         }
 23                     }
 24                     divs[i].onmouseup = function(){                    
 25                         this.style.background="black";
 26                     }
 27                 }    
 28                 
 29             }
 30             
 31         </script>
 32         
 33         
 34         <style>
 35             #calculator{
 36                 width: 400px;
 37                 height: 400px;
 38                 background: #ccc;
 39                 position: relative;
 40             }
 41             #input input{
 42                 width: 330px;
 43                 height: 30px;
 44                 margin-left: 30px;
 45                 margin-top: 10px;
 46                 margin-bottom: 10px;
 47                 position: relative;
 48             }
 49             #input{
 50                 background: lawngreen;
 51             }
 52             .rows{
 53                 float: left;
 54                 background: yellow;
 55                 width: 100%;    
 56             }
 57             ul{
 58                 height: 60px;
 59                 list-style-type: none;
 60                 float: left;
 61             }
 62             ul li{
 63             float: left;
 64             margin: 0px 20px 0px 0px;
 65             }
 66             .clickBlock{
 67                 position: relative;
 68                 text-align: center;
 69                 padding:20px;
 70                 float: left;
 71                 width: 20px;
 72                 height: 20px;
 73                 background: black;
 74                 color: white;
 75             }
 76         </style>
 77     </head>
 78     <body>
 79         <div id="calculator">
 80             <div id="input">
 81                 <input type="text" name="txt" id="txt" readonly/>
 82             </div>
 83             
 84             <div class="rows">
 85                 <ul>
 86                     <li><div class="clickBlock">1</div></li>
 87                     <li><div class="clickBlock">2</div></li>
 88                     <li><div class="clickBlock">3</div></li>
 89                     <li><div class="clickBlock">+</div></li>
 90                 </ul>
 91             </div>
 92             
 93             <div class="rows">
 94                 <ul>
 95                     <li><div class="clickBlock">4</div></li>
 96                     <li><div class="clickBlock">5</div></li>
 97                     <li><div class="clickBlock">6</div></li>
 98                     <li><div class="clickBlock">-</div></li>
 99                 </ul>
100             </div>
101             
102             <div class="rows">
103                 <ul>
104                     <li><div class="clickBlock">7</div></li>
105                     <li><div class="clickBlock">8</div></li>
106                     <li><div class="clickBlock">9</div></li>
107                     <li><div class="clickBlock">*</div></li>
108                 </ul>
109             </div>
110             
111             <div class="rows">
112                 <ul>
113                     <li><div class="clickBlock">0</div></li>
114                     <li><div class="clickBlock">.</div></li>
115                     <li><div class="clickBlock">=</div></li>
116                     <li><div class="clickBlock">/</div></li>
117                 </ul>
118             </div>
119             
120         </div>
121     </body>
122 </html>
View Code

jQuery

1) 什么是jQuery

JavaScript的函数库。    (原生)

http://jquery.cuishifeng.cn/

jQuery是一个快速,小巧,功能丰富的JavaScript库。它使诸如HTML文档遍历和操纵,事件处理,动画和Ajax等事情变得简单得多,而且易于使用的API可以在多种浏览器中使用。

2) jQuery使用

下载jQuery函数库,在script标签中引用

    cdn(内容分发网络)  

jQuery官方CDN路径:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js" ></script>
Google的CDN路径:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>

3) 基本语法

$(selector).action()

  A. $()简写,jQuery

  B. selector:选择器

  C. action():操作

4) 选择器

a) 基本选择器

//1.id选择器
//document.getElementById("div1");   //dom对象
console.log($("#div1"));   //jQuery对象:dom对象的封装
//2.类选择器
console.log($(".box"));
//3.标签选择器
console.log($("div"));
//4.通配选择器
console.log($("*"));

b) 层级选择器

//1.后代选择器
console.log($("ul span"));
//2.子代选择器
console.log($("ul > span"));
//3.相邻选择器(后面的一个)
console.log($("#p1 + h2"));
//4.同辈选择器(后面的所有)
console.log($("#p1 ~ h2"));

c) 基本筛选器

//1.第一项
console.log($("li:first"));
//2.最后一项
console.log($("li:last"));
//3. =
console.log($("li:eq(1)"));
//4. >
console.log($("li:gt(1)"));
//5. <
console.log($("li:lt(1)"));
//6. 奇数
console.log($("li:odd"));
//7.偶数
console.log($("li:even"));

d) 可见性

console.log($(":hidden"));
console.log($(":visible"));

e) 属性选择器

//根据属性的名称获取元素
console.log($("[id]"));
//属性等于某值
console.log($("[id='p1']"));

 

posted @ 2018-01-20 16:26  扎心了,老铁  阅读(392)  评论(0编辑  收藏  举报