は確かに、動作します。しかし、あなたがチェックしていないイベントには非常に多くの特別な条件があります。単にのバックスペースとの削除を確認するだけでは不十分です。あなたが許すべき他の鍵があります。たとえば、左右の矢印、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とスペースをチェックするだけではありません。私は正確に正しい文字で名前を取得することがシステムの機能性にどれほど重要かを再評価したいと思います。名前を正しく入力するには、ユーザーにいくつかの責任を負わせても構いません。
実際に入力フィールドに入力されたものではなく、押されたキーを検証しているのはなぜですか? – Shef
誰かが入力に何かをペーストしたらどうしますか? – Pehmolelu
@Pehmoleluが言っているように、彼らは単にキーを押し続けているのでしょうか?なぜそれをonblurまたはonchangeで検証しないのですか –