用户名输入代码中不允许使用空格

时间:2012-11-24 06:19:53

标签: jquery

  

可能重复:
  See if Input Has Spaces with 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;
 });​

1 个答案:

答案 0 :(得分: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);            
    });
});

也就是说,在keyup上,如果键是空格,则显示带有消息的警报并删除空格。但是,在模糊时删除可能在该字段中的任何空格 - 因为用户可以在不使用键盘的情况下复制/粘贴或拖动。

演示:http://jsfiddle.net/wP8mP/

编辑:如果是我的代码,我可能会完全删除警报 - 我只是通过调用向下的<{em>}上的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/