输入时不允许初始空格

时间:2014-05-16 16:04:58

标签: javascript regex

我需要在输入中拒绝初始空格(不在表单中),我有这样的代码:

<input id="customer-name" class="required no-spaces" minlength="3"  />

这是我的javascript函数:

$(".no-spaces").on('keypress', function(e) {
     if (e.which == 32) {
         return false;
     }
});

但是这不允许在输入的任何部分中使用空格。如何在任何文本之前做到这一点?

编辑:真实的是我正在使用输入进行自动完成,如果我允许初始空格,它将返回所有数据。

4 个答案:

答案 0 :(得分:1)

事先验证字符串是否为空。

$(".no-spaces").on('keypress', function(e) {
     if ($(this).val() == "" && e.which == 32) {
         return false;
     }
});

另外,检查this是为了防止用户选择整个文本,然后按空格this来检查光标是否确实在输入的开始处(感谢Barmar提及此具体案例)

答案 1 :(得分:1)

只需检查文本框中是否有另一个字符。

$(".no-spaces").on('keypress', function(e) {
     if (e.which == 32 && ($this).val() == '') {
         return false;
     }
});

修改

我希望它可能有用。

$(".no-spaces").on('keypress', function(e) {
     $(this).val(function(i, v) {
        if (v[0] == ' ') {
            return v.slice(1, v.length);
        };
        return v;
     });
});

答案 2 :(得分:0)

$(".no-spaces").on('keypress', function(e) {
     if (e.which == 32) {
         $(this).val($(this).val().replace(/^\W*/, ''));
     }
});

答案 3 :(得分:0)

这适合我。

$(".no-spaces").on('keypress', function(e) {
     var val = $(this).val();
     val_ltrim = ltrim(val);
     $(this).val(val_ltrim);
});

问候。