不应该在单词之间留出多个空格

时间:2017-01-25 07:11:06

标签: javascript

function stripspaces(input)
{
    input.value = input.value.replace(/\s+/gi," ");

}

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

1 个答案:

答案 0 :(得分:0)

您可以通过调用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">
&#13;
&#13;
&#13;

这仍然存在这样的问题,即它不会阻止使用双倍空格进入框中。因此,在焦点丢失时仍然可以替换多个空格,以确保输入永远不会包含多个连续空格。