HTML5學習之表單

樓主現在大三考研狗一枚,現在考研和學技術一起抓,寫點東西記錄自己的成長,各位看官多多海涵。


書上的內容貼出:

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.οnlοad=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="運行" οnclick="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="[email protected]" list="emaillist"><br/>
			<datalist id="emaillist">
				<option>[email protected]</option>
				<option>[email protected]</option>
			</datalist>
			<input type="range" name="volume" id="volume" min="0" max="150" step="10" value="20" οnchange="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="提交" οnclick="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瀏覽器感覺大部分還是實現了支持的。

時間太晚了,後續詳細內容以後再來補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章