如何在书写时删除/修剪空格或标签?

时间:2016-12-01 02:01:26

标签: javascript jquery string text keydown

我正在尝试在用户写作时使用javascript(在jQuery中)修剪String:

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

但这里的问题是当用户写一个空格来写另一个单词时,这个代码会修剪输入中的数据,下一个单词连接如下:

I'mbigandgreat

我真正需要的是当用户使用CTRL + V从剪贴板中删除文本时删除标签或空格。

你能帮忙吗?

3 个答案:

答案 0 :(得分:1)

当用户按下Ctrl + V或粘贴输入时,您应该只运行修剪代码,而不是仅捕获任何keydown事件。

这对于IE来说很难实现,但对于其他浏览器,您可以使用paste事件。

或者(虽然这很臭),检查e.which ===' ascii代码为V'和e.ctrlKey === true

答案 1 :(得分:1)

我认为这就是你所需要的。寻找重复的空间字符。保留最后一个并删除其他人。带有RegExp的String.replace可以处理这个问题。

我也使用了keyup事件而不是keydown



$(document).on('keyup', "input[type='text'], textarea", function(e) {
  let val = $(this).val();
  val = val.replace(/(?:^\s+|\s+?(\s))(\S+)/g, "$1$2");
  val = val.replace(/\s+(\s)$/, "$1"); 
  $(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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

甚至有必要在客户端上修剪它吗?如果这很重要,那么无论如何你都需要在服务上进行,所以你可能只能把它留在那里。