專業(yè)知識(shí):JavaScript驗(yàn)證整個(gè)表單
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
不像域級(jí)有效性檢查(field-level validation),表單級(jí)有效性檢查(form-level validation)將整個(gè)表單上的某組(或全部)值作為一個(gè)整體分析其一致性。表單級(jí)有效性檢查一般發(fā)生在將一個(gè)已完成的HTML 表單提交給CGI 程序之前。我們這樣做是為了確保用戶在將數(shù)據(jù)發(fā)送至服務(wù)器之前,已經(jīng)填寫了所有的必填域。
驗(yàn)證整個(gè)表單其實(shí)相當(dāng)簡(jiǎn)單。在我們的例子當(dāng)中,我們已經(jīng)去除了大部份會(huì)自動(dòng)彈出即時(shí)警告信息的域級(jí)有效性檢查。下面是一個(gè)例子: function isANumber(number) { answer = 1; if (!parseFloat(number)) { //the first digit wasn't numeric answer = 0; } else { //the first digit was numeric, so check the rest for (vari=0; i if ((number.charAt(i) != "0") && (!parseFloat(number.charAt(i)))) { answer = 0; break; } } } if (answer == 1) { orderPlaced = true; } return answer; } 上面的代碼,基本上是我們前面的數(shù)字檢查函數(shù),只不過(guò)沒(méi)有JavaScript 警告信息。在這個(gè)情況中,如果用戶輸入了數(shù)字以外的字符,我們不會(huì)自動(dòng)發(fā)送錯(cuò)誤信息。來(lái)源:www.examda.com 一旦用戶認(rèn)為她已經(jīng)完成了整個(gè)表單,那么她就可以按下 Submit(提交)按鈕。在那個(gè)時(shí)候,我們就檢查每個(gè)域是否有遺漏,或是存有格式不正確的數(shù)據(jù)。 function validateForm() { varfixThis = ""; if (!(isANumber(document.orderForm.numberOrdered.value))) { fixThis += "Please enter a numeric value for the number of brains field.n"; } if (!(exists(document.orderForm.typeField.value))) { fixThis += "Please enter the type.n"; } if (!(exists(document.orderForm.stateField.value))) { fixThis += "Please enter the state.n"; } if (!(isAPhoneNumber(document.orderForm.phoneNumber.value))) { fixThis += "Please enter the phone number in the following format: (123)456-7890"; } if (fixThis != "") { alert(fixThis); } else { document.location.href = "thanks.html"; } } 這個(gè)函數(shù)檢查表單中所有的域,以確保每個(gè)域都包含有效的值。倘若它發(fā)現(xiàn)某個(gè)域缺少有效的數(shù)據(jù),它就會(huì)在fixThis變量添加一個(gè)新的警告信息,然后再繼續(xù)下去。在最后,它要么彈出一個(gè)含有各種警告信息的窗口,就是傳送一個(gè)簡(jiǎn)短的“Thank You”給用戶。 注意:這個(gè)例子檢查了表單中我們沒(méi)有提到的一部分——State 框,它根據(jù)用戶輸入的美國(guó)各州的編碼計(jì)算銷售所得稅。 該文章在 2010/11/28 14:20:08 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |