PC表单事件 && 移动端表单事件
[x] PC : click、change、keydown、keyup、blur(失去焦点)
[x] 移动端 : 一般没有keydown、keyup(移动端使用的键盘是虚拟键盘)
input ( 移动端多的一个 )
|
|
传统input表单类型
[x] 文本类:
text
、password
password的显示因浏览器而不同
12<input type=""> <!-- 默认text--><input type="password">
[x] 按钮类:
submit
、reset
、button
123<input type="button" value="请按下"><input type="submit">//提交<input type="reset">//重置[x] 单复选框类:
radio
、checkbox
- [ ]
radio
- onchange事件:会在域的内容改变时发生
- checked被选中的
label中的for可使得 字体起选择作用
123456789101112131415161718<input type="radio" name="sex" id="men" value="这是men" checked><label for="men">男</label><!--checked被选中的 --><input type="radio" name="sex" id="women" value="这是women"><label for="women">女</label><!--for可使得字体也可点击 --><input type="submit" id="submit">// 表单事件var submit=document.getElementById("submit");var men=document.getElementById("men");var women=document.getElementById("women");submit.onclick=function(){var flag=0;console.log(men.checked?flag=0:1);}// men.onclick=women.onclick=function(){// console.log(this.value);// }men.onchange=women.onchange=function(){console.log(this.value);}//表单事件:只有改变才发生[ ]
checkbox
123456789101112131415161718192021222324252627282930313233343536<input type="checkbox" name="eat" id="water" value="水"><label for="water">水</label><input type="checkbox" name="eat" id="apple" value="苹果"><label for="apple">苹果</label><input type="checkbox" name="eat" id="cherry" value="樱桃"><label for="cherry">樱桃</label><input type="submit" id="submit"><input type="button" id="allchecked" value="全选"><input type="button" id="invert" value="反选">// checkboxvar submit = document.getElementById("submit");var eatList = document.getElementsByName("eat");var allchecked = document.getElementById("allchecked");var invert= document.getElementById("invert");//ie中只对表单元素起作用submit.onclick = function() {for (var i = 0; i < eatList.length; i++) {var curEat = eatList[i];if (curEat.checked) {console.log(curEat.value)}}}//全选allchecked.onclick = function() {for (var i = 0; i < eatList.length; i++) {var curEat = eatList[i];curEat.checked = true;}}//反选invert.onclick = function() {for (var i = 0; i < eatList.length; i++) {var curEat = eatList[i];curEat.checked=curEat.checked? false:true;}}
- [ ]
[ ]
上传文件file
、当前文本框隐藏hidden
- 上传文件
前端:二进制编码–>文件流post发送给服务器 - 展示文件
服务器:客户端得到文件流—>解码1<input type="file">
h5新增加
1、 h5新表单类型
search
、url
、email
、tel
、number
、range
、color
date
、time
、dateTime
、month
、 week
|
|
作用
[x] 提高开发效率
[x] (h5表单新类型最核心作用)在移动端使用对应input表单类型,当用户输入时可调取对应虚拟键盘
- 比如email类型则在输入时键盘包含 字符和.@字母数字 (klyy.@163.com)
- [x] 相对于传统表单提供了新的验证方式:
|
|
- [ ] 输入完成后验证:
- 新类型:JS提供value.checkValidity() 验证格式
- 传统:onblur+正则验证格式1234567891011121314151617// 新类型email--checkValidity()inputEmail.onblur=function(){var value=this.value.myTrim();//去除首尾空格--trim()不兼容if(!this.checkValidity()){console.log("邮箱格式不正确!")}}``````js// 传统验证方式tipEmail.onblur=function(){var value=this.value.myTrim();//去除首尾空格--trim()不兼容var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;//验证邮箱格式if(!reg.test(value)){console.log("邮箱格式不正确!")}}
- [ ] 边输入边验证
- 新类型:css中提供的是input:valid/invald
传统:onkeyup+正则
12345678//新类型emalil验证#inputEmail:valid {border: 1px solid green;}#inputEmail:invalid {border: 1px solid red;}12345678910//传统验证tipEmail.onkeyup = function() {var value = this.value.myTrim(); //去除首尾空格--trim()不兼容var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; //验证邮箱格式if (!reg.test(value)) {this.style.border = '1px solid red';} else {this.style.border = '1px solid green';}}
新增加属性
- [x] 还增加常用属性:placeholder,用来给文本框设置默认提示信息的,但不太兼容
|
|
新表单元素:
dataList
、progress
传统一级下拉菜单(不是文本框)