2011-07-29 4 views
1

javascriptを使ってプロジェクトでいくつかのフォームの検証をしています。私は何をしているのですか?それを行う良い方法があるようです。ここに私が持っているものの例があります。javascriptでフォーム検証を行う「正しい」方法は何ですか?

onkeypress="return keyNumOnly(event)" 
function keyNumOnly(key) 
{//this allows numbers and decimals. 
    var keychar; 
    var numcheck; 
    var keynum; 
    if(window.event) // IE 
     { 
      keynum = key.keyCode; 
     }  
    else if(key.which) // Netscape/Firefox/Opera 
     { 
      keynum = key.which; 
     } 
    if (keynum==8) 
     { 
      return true; 
     } 
    keychar = String.fromCharCode(keynum); 
    numcheck = /\d/; 
    if (keychar== ".") 
     { 
      return true;  
     } 
    return numcheck.test(keychar); 
} 

答えて

1

いくつかのクリーンアップ:

someTextbox.onkeypress = function(event) { // you can pass a function directly 
    var event = event || window.event, 
     // this means: event or window.event if event does not exist 

     keynum = event.keyCode || event.which, 
     // event.keyCode or event.which otherwise 

     keychar = String.fromCharCode(keynum), 

     numcheck = /\d/; 


    if(/\t|\./.test(keychar)) { 
     // checking for dot or tab using a regexp: \t is tab, | means 'or', \. is dot 
     return true; 
    } 


    return numcheck.test(keychar); 
} 
+0

ありがとうございます。私はかなり新しいので、私のコードの多くはいくつかのクリーンアップを使用することができます知っている。 – chris

1

フォームの検証を行うには、あらかじめパッケージ化されたソリューションを使用することをおすすめします。たとえば、jQueryを使用することができる場合、jQuery Validation Pluginは、フォームを検証する素晴らしい作業を行います。実行中の検証(実行中のように表示されます)と、「送信」イベントの前に検証が行われます。

+0

おかげでジャスティン。私は私のプロジェクトの他の部分でjqueryを使用しているので、私はそれを実装する方法を調べなければなりません。はい、この部分のライブ検証を行っています。サブバリデーションの検証はサーバー上で行われます。 – chris

+0

ようこそ。私は、あなたがサーバー側の検証も行う必要があることに同意します。私はこのプラグインの機能のいくつかを指摘しようとしていました。とにかく、幸運! :) –

+0

あなたは私に検証のために使用したjqueryコードの例をいくつか与えてくれますか? – chris

0

フォームの正規化(たとえばregexesとの比較)はHTML5の一部であり、すぐにブラウザ自体で行うことができます。

Dive into HTML5 explains how

+0

良い情報ですが、これは実際には非常に興味深い情報である質問 – Pepe

+0

には答えません。しかし、私が行っている検証は非常に具体的です。私は数字だけでなく、#.-()のようないくつかの特殊文字を必要とします。 – chris

関連する問題