2016-09-09 9 views
2

状況if文 - 文字のみを受け入れるようにフィールド

私は文字だけを受け入れる必要があるフィールドを持っています。送信時にdisplay_nameに数字がある場合はエラーが表示されますが、pat123と入力すると受け入れられますが、これは嫌です。

目指す

文字以外のものがdisplay_nameに入力された場合、ユーザーに警告するので、ノー数字と記号。どのような表現を使用する必要があり、どのようにコードに実装するのですか?文字だけがフィールドで受け入れられますか?

var fieldNum = /^[0-9a]+$/; 
 

 
var display_name = form.find('input[name="display_name"]').val(); 
 

 
if ((display_name.match(fieldNum))) { 
 
    console.log('error'); 
 
}
<input name="display_name" type="text"></input>

+0

質問は何ですか? –

+0

どのような表現を使用し、コードにどのように実装しますか?だから、手紙だけがフィールドで受け入れられますか? –

答えて

2

コード/ロジックには2つの問題があります。

最初に、正規表現 - なぜ/^[0-9a]+$/aは何ですか?

第2に、正規表現が一致すると、エラーが記録されます。その正規表現はちょうど数字の文字列(またはaの文字列)と一致します。

あなたは私が信じるやりたいことは正規表現が固定されている

var fieldNum = /^[a-z]+$/i; 

var display_name = form.find('input[name="display_name"]').val(); 

if (!(display_name.match(fieldNum))) { 
    console.log('error'); 
} 

のようなものであり、それが一致しない場合には(!)をチェックします。

3

あなたはこのように試すことができます:

<input name="display_name" onkeyup="this.value=this.value.replace(/[^a-zA-Z]/g,'');">

EDIT:

$('.myclass').bind('keyup blur',function(){ 
 
    var x = $(this); 
 
    x.val(x.val().replace(/[^a-zA-Z]/g,'')); } 
 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="display_name" class="myclass">

+0

ありがとうございます。可能であれば、HTMLに含めることを好まないでしょうか? –

+0

オペレータがこれに大文字を含める場合は、 '^ [a-zA-Z] + $' – Adjit

+1

のような式を使用する必要があります。重要な注意:このようなJavaScriptソリューションは、文字のみを入力してください。彼らが望むなら、あなたの小切手を簡単にバイパスすることができます。データの整合性が本当に懸念される場合は、**サーバー側で検証を行う必要があります**。 –

-1

^文字は、正規表現は文字列のみを開始してからチェックしていることを意味します。これは123testが期待どおりに動作するが、test123は動作しない理由です。

^を削除してみるとうまくいくはずです。

0

多分:

var myFunction = function (x) { 
 
    if (!/^[a-zA-Z]+$/.test(x.value)) { 
 
    console.log('error') 
 
    } 
 
};
<input name="display_name" type="text" onkeyup="myFunction(this)"></input>

関連する問題