无法在使用脚本放置逗号的文本区域中退格

Posted

技术标签:

【中文标题】无法在使用脚本放置逗号的文本区域中退格【英文标题】:Can't backspace in textarea where it uses a script to place commas 【发布时间】:2018-12-09 22:49:59 【问题描述】:

我正在使用此脚本在您键入的每个项目后自动放置一个逗号空格并按空格键。

但由于某种原因,我根本不知道如何让它退格。

我希望它能够删除整个项目和每个退格的尾随逗号。

   $('#textarea').keyup(function()
   var str = this.value.replace(/(\w)[\s,]+(\w?)/g, '$1, $2');
   if (str!=this.value) this.value = str; 
   );

<textarea id='textarea'>item1, item2, item3</textarea>

【问题讨论】:

【参考方案1】:

它只是启用退格:

$('#textarea').keyup(function(e) 
  if (e.which === 8)  // backspace detected
      return;
  
  var str = this.value.replace(/(\w)[\s,]+(\w?)/g, '$1, $2');
  if (str!=this.value) this.value = str; 
);

编辑:完整版:

$('#textarea').keyup(function(e)
    var str = this.value;
    if (e.which === 8) 
        var tmp = str.split(', ');
        tmp.splice(tmp.length - 1, 1);
        str = tmp.join(', ');
        this.value = str;
        return;
    
    str = str.replace(/(\w)[\s,]+(\w?)/g, '$1, $2');
    if (str!=this.value) this.value = str; 
);

【讨论】:

以上是关于无法在使用脚本放置逗号的文本区域中退格的主要内容,如果未能解决你的问题,请参考以下文章

Vue Bootstrap字符串逗号与textarea分隔的数组?

我正在尝试使用脚本撤消文本区域中的所有大写字母

Android 应用 (Cordova) 上的文本区域中的字数超出限制

带有换行符的文本区域中的数据到数据库

如何从 jquery 的文本区域中获取选定的文本? [复制]

在一页上的文本区域中写入,在另一页中显示文本数据[关闭]