2017-11-08 20 views
1

入力フィールドを任意の文字、ピリオド、およびハイフンに制限したいと考えています。特定の文字への入力を制限する

私は、次のように入力すると文字は入力できますが、何も入力できないと考えました。おそらく、私が見落としていることは明らかです。

$('input').on('keypress', function(event){ 
    if (event.keyCode > 65 || event.keyCode < 90) 
     return false; 
}); 

ありがとうございます!

答えて

2

これを実現するには、正規表現を使用して、入力したテキストを許可したい値と比較し、そうでないものを削除することができます。値を確認するときには、keyupイベントも使用する必要があります。 inputblur、およびpasteイベントを使用して、すべてのイベントがすべてのブラウザで処理されていることを確認することもできます。あなたはこれを試すだけにして番号を使用したい場合は

$('input').on('input blur keyup paste', function() { 
 
    $(this).val(function(i, v) { 
 
    return v.replace(/[^a-z\.-]/ig, ''); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="foo" type="text" />

+0

'でpreventDefault()'ソリューションよりも優れたこのソリューションですか?これを試してみてくださいどちらが速く/良いですか? – VTodorov

+1

'keydown' /' keyup'イベントの制限を回避するのが非常に簡単なので、 'paste'イベントの' preventDefault() 'は機能しません。数字は –

1

$('#text').keypress(function (e) { 
var regex = new RegExp("^[a-zA-Z]\-.+$"); 
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
if (regex.test(str)) { 
    return true; 
} 

e.preventDefault(); 
return false; 
}); 
+1

ですか? OPは明示的に '入力フィールドを任意の文字、ピリオド、ハイフンに制限する' –

+0

正規表現を更新しました。 – JSK

関連する問題