2011-11-16 7 views
0

に入力されてから特定の文字を防ぎます。は、私は次の文字のみをテキストボックスに入力できるようにしようとしていますテキストフィールド

`^_ \ ] and [ 

誰もがこの上でいくつかの知恵を持っています:私が何をやったかと悪いことではフィールドは、まだ次の特殊文字を受け入れることである

FieldOnKeyUp(el) { !(/^[A-zÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^A-zÑñ-\s]/ig,''):null; } 

:onkeyupの上、以下の機能を実行しますか?あなたは/iは、ケースフラグのセットを無視するんだ

[^A-zÑñ-\s]/ig 
    ^---- problem is here: you need to change to an uppercase Z 

ていますが、A-zの文字範囲を入れている - 小文字のzに至るまで、すなわち、資本A:

+0

なぜマイナスになったのですか? – Mike

答えて

2

問題は、あなたの正規表現であります。現在受け入れられている余分な文字( "["など)はすべて大文字のZと小文字の間に入ります。それをA-Zに変更して、何が起こるかを見てください。

また、ユーザーが(メインメニューまたは右クリックメニューから)貼り付けによって無効な文字を入力する可能性があり、キーイベントハンドラがそれをキャッチしないことに注意してください。

+0

うん、私はまた、その墓地を撃破するために雲の上を走る! ;) – Mike

1
次のようないくつかの事にあなたのコードの一部を変更し、

FieldOnKeyUp(el) { !(/^[a-zA-ZÑñ-\s]*$/i).test(el.value)?el.value 
= el.value.replace(/[^a-zA-ZÑñ-\s]/ig,''):null; } 

を参照してくださいそして、あなたの実際の必要条件であるものを得るdidntの

。キャレットを^に入れてと]にすると、アルファベットを許可しないターゲット文字列になります。しかし、あなたのコーディングごとに、不正な正規表現パターンを修正しました。

関連する問題