按下退格键时删除一组字符(Javascript)

Delete a group of characters when backspace is pressed (Javascript)

本文关键字:一组 Javascript 字符 删除      更新时间:2023-09-26

我有一个文本区域,其中包含由数字和句点初始化的新行:

<textarea autoFocus id="text-area"wrap="hard" 
  defaultValue ={this.state.textAreaVal} onKeyUp={this._editTextArea}/>

为了说明这一点:

  1. 1号线
  2. 2号线
  3. 3号线

我有一个叫做 onKeyDown 的函数来检查键码是否是退格键:

_editTextArea: function(event) {
    var key = event.keyCode;
    if (key == 8) {
      //remove the whole line if the previous characters are a number followed by a period and then a space
    } else {
      return true;
    }
  },

我在这里的目标是删除带有一个退格键的数字和句点(在 microsoft Word 中是如何完成的,想象一下当你到达项目符号或数字或罗马数字并按退格键时有一个有序列表,它不仅会删除整个列表项,还会将您返回到上一个列表项的最后一个字符。

我怎样才能做到这一点?

试试这个,应该给你足够的继续。

<p id="demo"></p>
<script>
function myFunction() {
    var str = "Hello world!  12.";
while (str.substring(str.length-1) == "." || isNumber(str.substring(str.length-1)))
{
str = str.substring(0,str.length-1)
}
    document.getElementById("demo").innerHTML = str;
}
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

</script>

我不知道你到底想要什么,但这也许可以帮助你:

$('textarea').keyup(function (e) {
  if (e.keyCode == 8) {
    e.preventDefault();
    var lines = $('textarea').val().split(''n');
    lines.splice(this.value.substr(0, this.selectionStart).split("'n").length-1, 1);
    $('textarea').val(lines.join("'n"));
  }
})

你可以在这里尝试:https://jsfiddle.net/swnhe2f0/1/