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

问题描述 投票:2回答:4

大家早上好!

我有一种情况,应该防止用户在输入字段上输入空格作为第一个字符。

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

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

因此,如何检查按键/按下时第一个字符是否为空格,返回false并不允许其将空格作为第一个字符键入?

javascript jquery events keypress keydown
4个回答
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
投票

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

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

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


0
投票

尝试类似的东西

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

这将检查当前值,然后它将运行该函数。使用Keyup可以在按下键后检查值。如果使用keydown,它将仍然具有该值。通过按键事件后,向上键将获取值。

或者正如其他人告诉您的那样,始终保持价值的微调。无论用户是否输入空格字符,都可以使用jQuery trim()方法来修剪值。

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.