【问题标题】:should not allow more than one space in between words单词之间不应允许超过一个空格
【发布时间】:2017-01-25 07:11:06
【问题描述】:
function stripspaces(input)
{
    input.value = input.value.replace(/\s+/gi," ");

}

我写了这个函数。它正在工作,但是当我将鼠标指针指向或在单词之间用左箭头移动并留出空间时,它会跳到最后。谁能给我解决方案?

【问题讨论】:

  • 你能创建一个 jsfiddle 吗?
  • 不,我不知道 Jsfiddle @JaydipJ

标签: javascript


【解决方案1】:

您可以通过调用e.preventingDefault 来阻止输入,我们可以简单地测试是否按下了空格键,如果光标两侧有空格,则阻止输入。

document.addEventListener('DOMContentLoaded', function() {
  
  var input = document.getElementById('myInput');
  input.addEventListener('keydown', function(e){      
       var input = e.target;
       var val = input.value;
       var end = input.selectionEnd;
       if(e.keyCode == 32 && (val[end - 1] == " " || val[end] == " ")) {
         e.preventDefault();
         return false;
      }      
    });
});
<input type="text" id="myInput">

这仍然存在无法防止粘贴到带有双空格的框中的问题。因此,仍然值得在焦点丢失时替换多个空格,以确保输入永远不会包含多个连续空格。

【讨论】:

  • 接受 2 个空格。我只需要一个空格来接受按键。有人可以帮帮我吗?
  • 我已经更新了答案,以便它应该拒绝按键,而不是接受它然后删除它。防止按键不会阻止人们粘贴空格,您可能希望在焦点丢失(blur)或可能在change 上替换多个空格(我的答案的最新版本演示了如何做到这一点 - 只需更改keydownchange 并合并事件处理程序 + 使用我的 stripspaces 变体
猜你喜欢
  • 2016-01-20
  • 2015-11-12
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 2013-03-06
相关资源
最近更新 更多