フォームのバリデーション
(関数(){ 場合(window.addEventListener)window.addEventListener( "負荷"、INIT、偽)、 そう であれば(window.attachEvent)window.attachEvent( "オンロード" 、INIT); 関数のinit(){ 用(VAR私は= 0; I <document.forms.length; I ++ ) { VAR F = document.forms [I]; // 第I个フォーム のvar needValidation = 偽 ; //は、このフォームは、任意の必要がないことは、今のところ、想定します検証 のために(VARの J <f.elements.length; J ++ J = 0) { E = f.elements [J]。 もし(!e.type = "テキスト")続けます。VaRのパターン= e.getAttribute( "パターン" )。 varが必要= e.getAttribute( "必要")!= nullを。 // 参照してください、それは検証が必要な属性がある場合場合(&&必要!{パターン) パターン =「\\ sの」; e.setAttribute( "パターン" 、パターン)。 } であれば(e.pattern){ e.onchange = validateOnChange。 needsValidation = 真; } } もし(needValidation)f.onsubmit = validateOnSubmit。 } } 関数validateOnChange() { VARのテキストフィールド= この; VaRのパターン= textfield.getAttribute( "パターン" )。 VaRの値=テキストフィールド/ * この* / .VALUE。 もし(value.search(パターン)== - 1)textfield.classname = "無効" 。 他 textfield.classname =「有効」。 } 関数validateOnSubmit() { VARの無効= 偽。 用(varが I = 0; I < 本 .elements.length; I ++ ) { VARの Eは= この.elements [I]を、 もし(e.type == "テキスト" && e.onchange == validateOnChange){ e.onchange()。 もし無効=(e.classname ==「無効」)真。 } } もし(無効){ (アラート「フォームが不完全または不正確に記入されて\ nを『+』強調表示フィールドを修正して、もう一度やり直してください」); リターン はfalse ; } } })();
コール:
< ヘッド> < メタHTTP-当量= "Content-Typeの" コンテンツ= "text / htmlの;のcharset = UTF-8" /> < タイトル>無題ドキュメント</ タイトル> < スタイル> input.invalid { 背景色:# FA0 ; } </ スタイル> </ ヘッド> < ボディ> < フォームアクション= "Test.aspを" > 名:< 入力タイプ=」= "名前" に必要な /> < BR /> メール:< 入力タイプ= "テキスト" 名前= "メール" パターン= "^ \ sの* \ワット+ @ \ + \ W \ + \ sの* $ワット" /> < BR /> 郵便番号:< 入力タイプ= "テキスト" 名前= "ZIP" パターン= "^ \ S * \ D {5} \ sは$ *" /> < BR > 未検証:< 入力タイプ= "テキスト" のonchange =」警告( "テスト")」/> < BR /> <入力タイプ= "提出" /> </フォーム>