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);            
    });
});

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

演示: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 回答