HTML5学习之表单

来源:互联网 发布:知豆官方网站 编辑:程序博客网 时间:2024/05/17 23:03

楼主现在大三考研狗一枚,现在考研和学技术一起抓,写点东西记录自己的成长,各位看官多多海涵。


书上的内容贴出:

ValidityState对象

ValidityState对象是通过validity 属性获取的,该对象有8个属性,分别针对8个方面的错误验证,属性值均为布尔值。

1.valueMissing属性

必填的表单元素的值为空。

如果表单元素设置了required特性,则为必填项。如果必填项的值为空,就无法通过表单验证,valueMissing属性会返回true,否则返回false。

2.typeMismatch属性

输入值与type类型不匹配。

HTML 5新增的表单类型如email、number、url等,都包含一个原始的类型验证。如果用户输入的内容与表单类型不符合,则typeMismatch属性将返回true,否则返回false。

3.patternMismatch属性

输入值与pattern特性的正则不匹配。

表单元素可通过pattern特性设置正则表达式的验证模式。如果输入的内容不符合验证模式的规则,则patternMismatch属性将返回true,否则返回false。

4.tooLong属性

输入的内容超过了表单元素的maxLength 特性限定的字符长度。

表单元素可使用maxLength特性设置输入内容的最大长度。虽然在输入的时候会限制表单内容的长度,但在某种情况下,如通过程序设置,还是会超出最大长度限制。如果输入的内容超过了最大长度限制,则tooLong属性返回true,否则返回false。

5.rangeUnderflow属性

输入的值小于min特性的值。

一般用于填写数值的表单元素,都可能会使用min特性设置数值范围的最小值。如果输入的数值小于最小值,则rangeUnderflow属性返回true,否则返回false。

6.rangeOverflow属性

输入的值大于max特性的值。

一般用于填写数值的表单元素,也可能会使用max特性设置数值范围的最大值。如果输入的数值大于最大值,则rangeOverflow属性返回true,否则返回false。

7.stepMismatch属性

输入的值不符合step特性所推算出的规则。

用于填写数值的表单元素,可能需要同时设置min、max和step特性,这就限制了输入的值必须是最小值与step特性值的倍数之和。如范围从0到10,step特性值为2,因为合法值为该范围内的偶数,其他数值均无法通过验证。如果输入值不符合要求,则stepMismatch属性返回true,否则返回false。

8.customError属性

使用自定义的验证错误提示信息。

有时候,不太适合使用浏览器内置的验证错误提示信息,需要自己定义。当输入值不符合语义规则时,会提示自定义的错误提示信息。

通常使用setCustomValidity()方法自定义错误提示信息:setCustomValidity(message)会把错误提示信息自定义为message,此时customError属性值为true;setCustomValidity("")会清除自定义的错误信息,此时customError属性值为false。



<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Html5表单</title><script type="text/javascript">function calculate(){var length=document.loandata.length.value;var width=document.loandata.width.value;var height=document.loandata.height.value;//var area=document.getElementById("area");//var volume=document.getElementById("volume");area.innerHTML=length*width;volume.innerHTML=length*width*height;}function checkForm(frm){if(frm.myEmail.checkValidity()){/* 显式验证邮件*///alert("邮件格式正确!");//return true;}else{//alert("邮件格式错误! ");//return false;}var name=frm.name3;if(name.value==""){//name.setCustomValidity("请填写您的姓名! ");//自定义错误提示}else{//name.setCustomValidity("");//取消自定义错误提示}}function invalidHandler(evt){//获取当前被验证的对象   FireFox暂不兼容var validity=evt.srcElement.validity ;//检测ValidityState对象的valueMissing属性if(validity.valueMissing){alert("姓名是必填项,不能为空");}//如果不希望浏览器默认的错误提示方式,可以使用下面的方式取消evt.preventDefault();//阻止事件冒泡evt.stopPropagation();}window.onload=function(){var name=document.getElementById("name3");//注册监听invalid事件name.addEventListener("invalid",invalidHandler,false);}</script></head><body><form action="helloWord.html" name="loandata" id="form1" method="post"><table><tr><th>输入长宽高的数值:</th></tr><tr><td>1) 矩形的长度是:</td><td><input type="text" name="length" placeholder="请输入长度"></td></tr><tr><td>2) 矩形的宽度是:</td><td><input type="text" name="width" autofocus="autofocus"></td></tr><tr><td>3) 矩形的高度是:</td><td><input type="text" name="height" autocomplete="on"></td></tr><tr><td colspan="2"><input type="button" value="运行" onclick="calculate()"></td></tr><tr><td><b>矩形的面积和体积分别是:</b></td></tr><tr><td>矩形的面积是:</td><td><span class="result" id="area"></span></td></tr><tr><td>矩形的体积是:</td><td><span class="result" id="volume"></span></td></tr></table><input type="radio" value="男" name="sex" checked="checked">男<input type="radio" value="女" name="sex">女<br/><input type="url" name="webUrl" id="webUrl" value="http://www.baidu.com"><br/><input type="email" name="myEmail"  value="862482770@qq.com" list="emaillist"><br/><datalist id="emaillist"><option>test1@test.com</option><option>test2@test.com</option></datalist><input type="range" name="volume" id="volume" min="0" max="150" step="10" value="20" onchange="x.value=this.value"><output name="x">20</output>   <br/><input type="number" name="score" id="score" min="0" max="150" step="10"><br/><input type="tel" ><br/><input type="search" ><br/><input type="color" ><br/><input type="date" ><br/><input type="month" ><input type="week"><input type="time"><input type="datetime"><input type="datetime-local"><br/><input type="submit" value="提交到Page1" formaction="htmls/1.html"><input type="submit" value="提交到Page2" formaction="?page=2"><input type="submit" value="提交到Page3" formaction="?page=3"><input type="submit" value="提交" onclick="return checkForm(this.form)"><br/><input type="text" name="name2"><br/>Encryption:<keygen name="security" ><!-- 加入秘钥安全 --><input name="code" type="text" value="" pattern="[0-9]{6}" placeholder="6位邮政编码"><input type="text" id="name3" name="name3" placeholder="First and Last Name" required><br/></form><input name="name1" type="text" form="form1" required></body></html>



经过测试后发现:也是有好多功能FireFox还没有实现兼容,使用360浏览器感觉大部分还是实现了支持的。

时间太晚了,后续详细内容以后再来补充。

0 0