MIS2000Lab.的「HTML5 認證考試, 從零開始」#12 / #13 -- HTML5 與 JavaScript輸入驗證

摘要:MIS2000Lab.的「HTML5 認證考試, 從零開始」#12 / #13 -- HTML5 與 JavaScript輸入驗證





 

上一篇文章:MIS2000Lab.的「HTML5 認證考試,從零開始」#10 / #11 -- jQuery入門 (做得多,寫得少)

 

本文內容,將會在2014年底,碁峰出版社推出的HTML5新書裡面
 
 
緊接的兩篇文章將要分享HTML5的輸入驗證
 
簡單的說,就是防呆。避免使用者輸入錯誤的訊息?或是忘了填寫(留空白)等等
 
以前必須撰寫 JavaScript來防堵
但新的HTML5提供不少便利的屬性來幫忙
 
 
==== HTML5表單 ====
 
大致上都跟傳統THML表單雷同,學過的人可以放心。

HTML表單必須有一個送出(submit)的按鈕(寫成<input type=submit>),
 
才能在填寫完畢以後將這些資料送出(給另一個網頁處理,如<form action=login.aspx>所設定的)。
 
 
 
==== 其他的新 HTML5表單元件 ====
 
<select>下拉式選單在HTML5多了一個群組的功能
也就是 <optgroup>

如果您是撰寫ASP.NET的朋友,請參考這篇文章,也可以讓您的下拉式選單(DropDownList)
 
 
 
 
==== ComboBox, <datalist> ====
 
您點選文字輸入方塊(<inpuyt type=text>)後出現類似下拉式選單的選項(本節重點,<datalist>),
點選之後,還可以進一步修改裡面的文字(值)。
 
在Windows程式裡面常見到這種控制項,名為ComboBox,
 
但在網頁表單上則沒有這東西,必須自己動手改寫,而今HTML5補齊這個功能。

 
==== 多采多姿的 TextBox ====
 
TextBox可以讓使用者任意輸入文字,也是我們做「驗證」最傷腦筋的地方
 
HTML5增加很多的屬性,幫了我們不少忙。
 
 
首先,輸入日期、E-Mail、顏色、數字範圍都可以應用上HTML5的新功能了。
 
下圖的左上方,可以發現「顏色」可以用點選的,會出現調色盤。不需要自己輸入顏色碼。
 
 
ASP.NET的 TextBox控制項也具備類似的功能,請修改 TextMode屬性即可

 

上圖的右下方,當您輸入網址URL、E-mail的「錯誤格式」
 
也會自動出現警告!!
 
 
除了本文一開始提到的placeholder可以當成「浮水印」來用之外。
 
  • required可以用來驗證「必填」欄位!
  •  
  • title可以當作:出現錯誤時的提示文字
  •  
  • pattern可以輸入正規表達式 (Regular Expression) 來做驗證。
 
撰寫ASP.NET的朋友可以發現:ASP.NET驗證控制項有不少功能,都可以被 HTML5取代
 
 
 
 
==== 正規表達式 ====
 
範例練習 [0-9]{2}[A-Z]{3},代表「輸入兩個數字、三個大寫英文字」。
 
本書也提供一些簡單的驗證公式,給大家參考:
 
  • 台灣地區身份證編號[A-Z]{1}[0-9]{9},意思是說:身份證的第一個字,必須是"大寫"的英文字母(即[A-Z]),而後面的九個字必須是數字(即[0-9])。
  • 台灣地區的郵遞區號([0-9]{3}|[0-9]{5}),意思是說:郵遞區號可能是三個數字「或是」五個數字。如果要強制檢查五碼“數字”的郵遞區號,也可以用\d{5}。
 
 
這些公式規則並非微軟獨創,早從UNIX時代就已經廣泛運用至今,
所以學好規則運算式(Regular Expression)對自己很有幫助。
 
雖然一開始會讓人頭昏腦脹,但是用慣了也就習慣了。
 
想想看:
如果沒有它的幫助,我們又要花時間寫一大堆Script程式,比較起來算是簡單多了!
 
 
微軟官方網站,這篇文章超詳細的
 
下一篇文章將會介紹 JavaScript(寫程式)來進行驗證
 

=============================================================

 

上一篇文章提到「輸入驗證」,而且透過HTML5新的表單元件、屬性
可以做到很多事情(跟傳統HTML表單比起來,真的進步太多)
 
不過,學習寫程式來做驗證,也是逃避不了的!
 
驗證,可以的話,讓瀏覽器(在使用者的電腦上)完成
不要回去騷擾Web Server
 
因為JavaScript是在使用者電腦上的「瀏覽器」運作,所以不需要把資料傳回Web Server,
可以節省伺服器資源與網路頻寬。
 
有錯誤就立刻呈現、不需等待,如此一來也改善了使用者經驗。
 
在HTML表單裡面,都會有一個送出按鈕(<input type=submit>)。
當您填寫完畢後可以把資料送出,作下一階段的處理。
<form id="Form1" method="post" action="test.aspx"   
Name=”Form111” onsubmit="return checkData();" >  
  
<input type=”text” name="email" />  
<input type="submit" value="送出按鈕" />  
  
</form>  
  
  
<script type="text/javascript">  
// 註解:自己撰寫額外的JavaScript來進行資料的驗證動作。  
// 下面的Form111是指表單<form>的name名稱。emai是文字輸入方塊<input>的name名稱。  
function checkData() {  
  with (document.Form111) {  
     if (email.value.length == 0) {  
alert("不可留白。請輸入您的 E-Mail");  
        return false;  
// 在HTML5可用required屬性來取代這一段程式。  
      }   
else {  
 i = email.value.indexOf("@");  
 if (i <= 0) {  
alert("您輸入的 E-mail 不正確 !沒有@符號");  
return false;  
}  
      }  
   }    
}  
</script>  

 

==== 處理輸入事件 ====
 
如同上述的範例,表單輸入完成後,您會按下一個送出(Submit)按鈕將網頁輸入資料送到後端(Web Server)處理,
 
因此下面的範例會用到 onsubmit=”函式名稱”,代表送出資料以後會進行的JavaScript驗證。
<form id="Form111" method="post"   
action="registration.aspx"   
onsubmit="return validateForm();" >  
...(省略)...  
<input type="submit" Value=”確定(送出)” />  
</form>  
  
  
<script type="text/javascript">  
// 註解:自己撰寫額外的JavaScript來進行資料的驗證動作。  
function validateForm() {  
...(省略)...  
}  
</script>  

 

 
==== 驗證輸入(必須是數字) ====
 
這裡使用了正規表達式(上面文章有提到)
 
您可以看見程式裡面的那一段 /^\s*(\+|-)?\d+\s*$/
 
<form id="scoreForm" method="post"  
action="..."   
onsubmit="return validateForm();" >  
...(省略)...  
<div id="scoreField" class="field" >  
Score: <input id="score" name="score" type="number" />  
</div>  
...(省略)...  
</form>  
  
<script type="text/javascript">  
function isAnInteger(text){  
var intTestRegex = /^\s*(\+|-)?\d+\s*$/;  
return String(text).search(intTestRegex) != -1;  
}  
  
function validateForm()  
{  
if( !isAnInteger(document.getElementById('score').value))  
return false;  // 驗證失敗  
  
return true;  
}  
</script>  

 

 
 
從這些範例裡面,我們可以發現道:
自己寫JavaScript或是jQuery程式固然靈活、多變化
 
 
但上一篇文章介紹的正規表達式(Regular Expression),也可以更精簡地作到這些「輸入文字或數字」的驗證
而且更簡潔!
 
微軟官方網站,這篇文章超詳細的 http://msdn.microsoft.com/zh-tw/library/hs600312(v=vs.110).aspx
 
 
什麼時候該採用哪種技巧去解決問題?
或許更值得我們深思?
 
 
本文內容,將會在2014年底,碁峰出版社推出的HTML5新書裡面
9789863475750

HTML5、CSS、JavaScript 網頁程式設計與 MCSD 70-480 認證教材

MIS2000 Lab. 周棟祥/吳進魯

  • 出版商:碁峰
  • 出版日期:2015-04-09
  • 台幣定價:
  • $480
  • 售價:7.9 折 $379
  • 語言:繁體中文
  • ISBN:9863475750
  • ISBN-13:9789863475750
 
 
 
 
 
 
 
 
下一篇文章:使用XHR / XmlHttpRequest撰寫AJAX

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估