一、 表單驗證:減輕服務器的壓力、保證輸入的數據符合要求;html
二、 經常使用的表單驗證:日期格式、表單元素是否爲空、用戶名和密碼、E-mail地址、身份證號碼等;正則表達式
三、 表單驗證的思路:數組
1. 得到表單元素值,這些值通常是String類型,包含數字、下劃線等;服務器 2. 使用JavaScript的一些方法對獲取的String類型的數據進行判斷;函數 3. 當表單提交時,觸發onsubmit事件,對獲取的數據進行驗證;ui |
●表單選擇器用於選取某些特定的表單元素,好比全部單選按鈕或隱藏的元素;this |
四、表單選擇器:編碼
語法url |
描述spa |
示例 |
:input |
匹配全部input、textarea、select和button 元素 |
$("#myform :input")選取表單中全部的input、select和button元素 |
:text |
匹配全部單行文本框 |
$("#myform :text")選取email 和姓名兩個input 元素 |
:password |
匹配全部密碼框 |
$("#myform :password" )選取全部<input type="password" />元素 |
:radio |
匹配全部單項按鈕 |
$("#myform :radio")選取<input type="radio" />元素 |
:checkbox |
匹配全部複選框 |
$(" #myform :checkbox " )選取<input type="checkbox " />元素 |
:submit |
匹配全部提交按鈕 |
$("#myform :submit " )選取<input type="submit " />元素 |
:image |
匹配全部圖像域 |
$("#myform :image" )選取<input type=" image" />元素 |
:reset |
匹配全部重置按鈕 |
$(" #myform :reset " )選取<input type=" reset " />元素 |
:button |
匹配全部按鈕 |
$("#myform :button" )選取button 元素 |
:file |
匹配全部文件域 |
$(" #myform :file" )選取<input type=" file " />元素 |
:hidden |
匹配全部不可見元素,或者type 爲hidden的元素 |
$("#myform :hidden" )選取<input type="hidden " />、style="display: none"等元素 |
五、表單屬性過濾選擇器:
語法 |
描述 |
示例 |
:enabled |
匹配全部可用元素 |
$(" #userform :enabled" )匹配form內部除編號輸入框外的全部元素 |
:disabled |
匹配全部不可用元素 |
$(" #userform :disabled" )匹配被禁用的輸入框 |
:checked |
匹配全部被選中元素(複選框、單項按鈕、select 中的option) |
$(" #userform :checked" )匹配選中的選項 |
:selected |
匹配全部選中的option 元素 |
$(" #userform :selected" ) 匹配指定元素的選項 |
六、驗證表單內容:
●使用String 對象驗證郵箱:不能爲空,格式正確 ●文本框內容的驗證: 密碼不能爲空,很多於6個字符,姓名不能爲空,不能有數字 |
||
●使用String 對象驗證郵箱: ●實現思路 一、 使用val( )方法獲取文本框的值 二、 使用indexOf( ) 來判斷字符串是否包含「@」和「.」 三、使用方法submit( )提交表單 四、根據返回值是true仍是false來決定是否提交表單 |
eg: $(document).ready(function(){ $("form").submit(function(){ var mail = $("#myform :text").val(); if (mail=="") {//檢測Email是否爲空 alert("Email不能爲空"); return false; } if (mail.indexOf("@") == -1) { alert("Email格式不正確\n必須包含@"); return false; } if (mail.indexOf(".") == -1) { alert("Email格式不正確\n必須包含."); return false; } return true; }) }) |
|
●非空驗證: if (mail == "") { //檢測Email是否爲空 alert("Email不能爲空"); return false; } |
||
●字符串查找:indexOf():查找某個指定的字符串值在字符串中首次出現的位置 var str="this is JavaScript"; var selectFirst=str.indexOf("Java"); //返回8 var selectSecond=str.indexOf("Java",12); //返回11 |
||
●文本框內容的驗證: 一、實現思路 二、使用String對象的length屬性驗證密碼的長度 三、驗證兩次輸入密碼是否一致 四、使用length屬性獲取文本長度,而後使用for循環和substring( )方法依次截斷單個字符,最後判斷每一個字符是不是數字 |
||
●長度驗證: if(pwd.length<6){ //length屬性能夠獲取字符串長度 alert("密碼必須等於或大於6個字符"); return false; } |
●判斷字符串是否有數字:使用for循環和substring()方法依次截斷單個字符,再判斷每一個字符是不是數字 for (var i = 0; i < user.length; i++) { //截取單個字符 var j = user.substring(i, i + 1); if (isNaN(j) == false) { alert("姓名中不能包含數字"); return false; } } |
|
eg:註冊頁面的驗證 |
||
驗證密碼: var pwd = $("#pwd").val(); if (pwd == "") { alert("密碼不能爲空"); return false; } if (pwd.length < 6) { alert("密碼必須等於或大於6個字符"); return false; } var repwd = $("#repwd").val(); if (pwd != repwd) { alert("兩次輸入的密碼不一致"); return false; } |
驗證帳號: var user = $("#user").val(); if (user == "") { alert("姓名不能爲空"); return false; } for (var i = 0; i < user.length; i++) { var j = user.substring(i, i + 1); if (isNaN(j) == false) { alert("姓名中不能包含數字"); return false; } } |
七、表單驗證事件和方法:
|
八、 正則表達式:是一個描述字符模式的對象,它是由一些特殊的符號組成的,和SQL Server中的通配符同樣,其組成的字符模式用來匹配各類表達式;
●爲何須要正則表達式:簡潔的代碼、嚴謹的驗證文本框中的內容 ●一個簡單的表達式便可驗證郵箱 var reg= /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/; if(reg.test(email) ==false){ $email_prompt.html("電子郵件格式不正確,請從新輸入"); return false; } |
●定義正則表達式: ★普通方式語法: var reg=/表達式/附加參數 ◆表達式:一個字符串表明了某種規則,其中可使用某些特殊字母來表明特殊的規則; ◆附加參數:用來擴展表達式的含義,主要三個參數以下: ☆g:表明能夠進行全局匹配; ☆i:表明不區分大小寫匹配; ☆m:表明能夠進行多行匹配; eg: var reg=/white/; var reg=/white/g; ★構造函數語法: var reg=new RegExp("表達式","附加參數") ☆表達式能夠是一個常量字符串,也能夠是一個JavaScript變量; |
●表達式的模式: ★簡單模式:經過普通字符串的組合來表達的模式(只能表示具體的匹配); eg: var reg=/china/; var reg=/abc8/; ★複合模式:可使用通配符表達更爲抽象的規則模式; eg:var reg=/^\w+$/; var reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/; |
九、RegExp對象:
★test()方法:用於檢測一個字符串是否匹配某個模式: 語法:正則表達式對象實例.test(字符串);//若是字符串中有正則表達式匹配的文本返回true,不然返回false; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
●RegExp對象的屬性:
★global:用於返回正則表達式是否包含標誌g,它聲明瞭給定的正則表達式是否執行全局匹配,若是g被標誌返回true,不然返回false; ★ignoreCase:屬性用於返回正則表達式是否包含標誌i,它聲明瞭給定的正則表達式是否執行忽略大小寫的匹配,若是被標誌返回true; ★multiline:屬性用於返回正則表達式是否包含標誌m,它聲明瞭給定的正則表達式是否以多行模式執行模式匹配,被標誌返回true; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
●String對象的方法:
★math():該方法能夠在字符串內檢索指定的值,找到一個或多個正則表達式的匹配;相似於indexOf(),但indexOf()返回的時字符串的位置,不是指定的值 語法:字符串對象.match(searchString或regexpObject); //searchString:檢索的字符串的值; //regexpObject:規定要匹配模式的RegExp對象; ★replace():該方法用於在字符串中用一些字符串替換另外一些字符,或替換一個與正則表達式匹配的子串; 語法:字符串對象。replace(RegExp對象或字符串,「替換的字符串」);//若是設置了全文檢索,則符合的會所有被替換,不然只替換一個; ★split():該方法將字符串分割成一系列字串並經過一個數組將這一系列字串返回; 語法:字符串對象.split(分割符,n); //分割符能夠是字符串,也能夠是正則表達式,n爲限制輸出數組的個數,可選項,若沒有則返回整個數組; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
●正則表達式符號:
★@ 先後的字符能夠是數字、字母、或下劃線; ★可是.以後的字符只能是字母;
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
●正則表達式的重複字符:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
●這則表達式中有:()、[]、{}區別以下: ★()是爲了提取匹配的字符串,表達式中有幾個()就有幾個相應的匹配字符串; ★[]是定義匹配的字符串,eg:[A-Za-z0-9]表示字符串要匹配英文字母和數字; ★{}是用來匹配長度,eg:\s{3}表明匹配三個空格; |
十、使用HTML5的方式驗證表單:
●HTML5新增驗證屬性:
|
||||||||||||||||||
●validity屬性:
|
^:開頭,$:結束,\d:數字,{6}:6位