如何禁用/删除输入字段上的第一个空格?

时间:2014-04-28 20:08:08

标签: javascript jquery events keypress keydown

大家早上好!

我有一个案例,我应该阻止用户输入空格作为输入字段的第一个字符。

我在这里有一个演示:http://jsbin.com/foyetolo/2/edit

只有在您第一次点击空格键时才有效。当您开始键入其他字符并在输入中选择整个文本(ctrl + a)然后点击空格键时,它会在输入字段的开头添加空格。

那么,如果第一个字符是空格,如何检查是否在keypress / keydown上,返回false并且不允许它将空格键入第一个字符?

4 个答案:

答案 0 :(得分:10)

您可以通过检查密钥是spaceselection start是否为0来执行此操作:

$(function() {
  $('body').on('keydown', '#test', function(e) {
    console.log(this.value);
    if (e.which === 32 &&  e.target.selectionStart === 0) {
      return false;
    }  
  });
});

<强> Demo Link

答案 1 :(得分:1)

这个jQuery函数在未按下某个键时选择所有文本输入,从字符串的开头删除所有空格并替换输入的值:

 <script>
   $(":text").keyup(function () {
     $(this).val($(this).val().replace(/^\s+/,""));
   }
 </script>

我不建议在使用keyup()直接替换空格时使用trim(),因为当您在单词后面键入空格时,它将在您开始编写下一个单词之前被删除。

答案 2 :(得分:0)

尝试类似

的内容
$('input').keyup(function () {
  if($(this).val() == '') {
    if(event.keyCode == 32) {
      return false;
    }
  }
}

这将检查当前值,然后它将运行该函数。使用密钥,在密钥被按下后检查值。如果你使用keydown,它仍然具有值。按键会在按键事件过后获得值。

或者正如其他人告诉你的那样,要始终不断削减价值。无论用户是否输入空格字符,您都可以使用jQuery trim()方法修剪值。

$('input').keyup(function () {
  $(this).val($.trim($(this).val()));
}

这会添加当前输入字段值的修剪形式。

答案 3 :(得分:0)

document.querySelector('#test')。addEventListener('input',function(e){ if(e.target.value ===“”) e.target.value =“”})

即使有任何用户选择,此代码也可以使用户第一个空格 输入整个文本(ctrl + a),然后按空格键