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

时间:2016-02-23 00:16:34

标签: javascript html reactjs

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

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

为了说明这一点:

  1. 第1行
  2. 第2行
  3. 第3行
  4. 我有一个名为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;
        }
      },
    

    我的目标是用一个退格键删除数字和句号(如何在微软单词中完成,想象一下当你到达要点时有一个有序列表或数字或罗马数字并按下退格键,它不仅删除了整个列表项,但它也会返回到上一个列表项的最后一个字符。

    我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

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

<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>

答案 1 :(得分:0)

我不确切地知道你想要什么,但这可能会对你有所帮助:

$('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/