0

重複の可能性:
jQueryで入力にスペースがあるかどうかを確認する

私はスペースなしでこのコードを持っています。少なくとも、登録時にユーザー名にスペースがないためだと思っていました...今それを見ると、すべてのキーアップが対象です!誰かが私にそれをスペースだけにするのを手伝ってもらえますか?

(function($){
    $(function(){
        $('#username_reg').keyup(function(){
            str = $(this).val(),
            str = str.replace(/\s/g,''),
            $(this).val(str),
            alert('No space are allowed in usernames');
        });
    });
})(jQuery);

私は今このコードも試しましたが、機能しませんでした:/

$("input#username_reg").on("keydown", function (e) {
    return e.which !== 32;
 });​
4

1 に答える 1

5

私は次のコードがあなたが望むことをすると信じています:

jQuery(function($){
    $('#username_reg').keyup(function(e){
        if (e.which === 32) {
            alert('No space are allowed in usernames');
            var str = $(this).val();
            str = str.replace(/\s/g,'');
            $(this).val(str);            
        }
    }).blur(function() {
        var str = $(this).val();
        str = str.replace(/\s/g,'');
        $(this).val(str);            
    });
});

つまり、キーアップ時に、キーがスペースだった場合、メッセージと共にアラートを表示し、スペースを削除します。ただし、ユーザーがキーボードを使用せずにコピー/貼り付けまたはドラッグ アンド ドロップできるため、ぼかし時にフィールドにある可能性のあるスペースをすべて削除します。

デモ: http://jsfiddle.net/wP8mP/

編集:それが私のコードであれば、おそらくアラートを完全に削除します-event.preventDefault()キーダウンを呼び出すことでスペースが入力されるのを防ぎ、コピー/貼り付けの場合はぼかしでスペースを削除します。

$('#username_reg').keydown(function(e){
    if (e.which === 32) {
        e.preventDefault();      
    }
}).blur(function() {
    // for variety's sake here's another way to remove the spaces:
    $(this).val(function(i,oldVal){ return oldVal.replace(/\s/g,''); });         
});

デモ: http://jsfiddle.net/wP8mP/1/

于 2012-11-24T06:39:23.213 に答える