2011-08-04 12 views
0

次のコードを使用してアルファベットを検証していますが、バックスペースまたは削除キーは使用できません。もしあなたがいい考えがあるならばお勧めします。前もって感謝します。フルネームのJquery-Validation

$('input#ClientA_FullName').keydown(function (e) { 
     if (String.fromCharCode(e.keyCode).match(/[^a-zA-Z ]/g)) { 
      return false; 
     } 
    }); 
+0

実際に入力フィールドに入力されたものではなく、押されたキーを検証しているのはなぜですか? – Shef

+0

誰かが入力に何かをペーストしたらどうしますか? – Pehmolelu

+0

@Pehmoleluが言っているように、彼らは単にキーを押し続けているのでしょうか?なぜそれをonblurまたはonchangeで検証しないのですか –

答えて

0

私は解決策を見つけたと思います。 作業サンプルについてはhttp://jsfiddle.net/Mq7mv/をご覧ください。

次のようにコードを変更する必要があります:それはあなたが何をしたいのか本当にかどう

​​イベントに検証
$('input#ClientA_FullName').keydown(function (e) { 
if ((e.keyCode != 8 /*backspace*/ || e.keyCode != 46 /*delete*/) && 
String.fromCharCode(e.keyCode).match(/[^a-zA-Z ]/g) == null) { 
     return false; 
    } 
}); 
0

は確かに、動作します。しかし、あなたがチェックしていない​​イベントには非常に多くの特別な条件があります。単にのバックスペースの削除を確認するだけでは不十分です。あなたが許すべき他の鍵があります。たとえば、左右の矢印、ctrl + x、v、およびc(上記のコメントで述べたように)、さらにはシフトキーなどです。また、1つのキーを押さえている人のように、1つのイベントだけを発生させるため、考慮する必要のある条件もあります。

より良いオプションは、blurイベントのフィールドを検証することです。このイベントは、フィールドがフォーカスを失う直前に発生します(カーソルはそこから移動します)。このイベントで検証すると、フィールドの値を完全な名前として確認できます(ほとんどの人が名前をフィールドに入れ、次のフィールドに移動するため)。あなたは特別な条件の全体の束をキャプチャする必要はありません、あなたは値を取得し、それが有効であるかどうかを確認し、移動します。

コードはあなたが今持っているものと非常に類似して、

$('input#ClientA_FullName').blur(function(e) { 
    var val = $(this).val(); 

    if (val.match(/[^a-z ]/gi)) //you matched an invalid character 
    { 
     alert("Client A Full Name is invalid"); 
     return false; 
    } 
}); 

また-Zとスペースをチェックすることが本当に「フルネーム」フィールドの有効なチェックではないことは注目に値するかもしれません。彼らの名前にアポストロフィー(例えば、「オブリン」など)、ハイフンズ(結婚して名前をハイフネーションする女性、「ナンシー・ジョーンズ・スミス」)、期間(「TJスミス」など)名前には文字の強調(ウムラウトなど)があるかもしれないグローバル名はもちろん。あなたの検証(私があなたに与えた妥当性検証の例)では、これらの文字が許可されていないため、これらの名前をシステムに入力することができません。

堅牢な名前検証システムでは、a-zとスペースをチェックするだけではありません。私は正確に正しい文字で名前を取得することがシステムの機能性にどれほど重要かを再評価したいと思います。名前を正しく入力するには、ユーザーにいくつかの責任を負わせても構いません。

0

私はあなたの名前が有効ではないという形をしている場所は知りません!だからなぜそれについての検証がありますか?代わりに、長さの検証を追加します。それはいくつかの国では本当に長い名前があるので、少なくとも1文字、最大値、または必要であれば255でなければなりません。誰かが彼の名前を伝えたくなければ、彼はまだzzzzzzzzzzzとタイプすることができます。キリル文字、アラビア文字、中国語のように世界には非常に多くの異なるアルファベットがあります。最善の方法は、長さの検証だけを行い、mysql_real_escape_string関数をSQL注入を防ぐために作ることです(mysqlを使用している場合)。 Javascriptはあなたを保護しません。ユーザーが望むなら、彼はまだPOSTにどんな種類のデータも置くことができます。 SQLインジェクション防止だけで名前をそのまま保存してください。

1
Try This 
$("#ValuationName").bind("keypress", function (event) { 
    if (event.charCode!=0) { 
     var regex = new RegExp("^[a-zA-Z ]+$"); 
     var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
     if (!regex.test(key)) { 
      event.preventDefault(); 
      return false; 
     } 
    } 
}); 
関連する問題