如何在写作时 remove/trim 空格或制表符?

How to remove/trim spaces or tabs while writing?

我正在尝试 trim 使用 javascript 的字符串(在 jQuery 中),同时用户正在编写:

$(document).on('keydown', "input[type='text'], textarea", function(e) {
            $(this).val( $(this).val().trim() );
            console.log('fixing');
        //if ($(this).val() == "") {
            //alert('gwo!');
        //}
    } );

但这里的问题是当用户写一个 space 来写另一个词时,这段代码 trims 将输入中的数据和下一个词连接起来,如下所示:

我很厉害

我真正需要的是在用户使用 CTRL+V 从剪贴板发送文本时删除制表符或 spaces。

你能帮忙吗?

甚至有必要 trim 在客户端上吗?如果它很重要,那么无论如何你都需要在发球时做,所以你可以把它留在那里。

我认为这就是您所需要的。查找重复的 space 个字符。保留最后一个并删除其他。 String.replace 使用 RegExp 可以解决这个问题。

另外我使用了 keyup 事件而不是 keydown

$(document).on('keyup', "input[type='text'], textarea", function(e) {
  let val = $(this).val();
  val = val.replace(/(?:^\s+|\s+?(\s))(\S+)/g, "");
  val = val.replace(/\s+(\s)$/, ""); 
  $(this).val( val );
 } );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea cols="40" rows="10"></textarea>