onkeypress 检查后不要在文本区域中写入字符

Don't write a character in a textarea after a onkeypress check

我有一个带有 onkeypress 函数调用的文本区域,我想检查行数是否超过 10:如果是,我不想写字符。如何在功能检查后“停止”写入?

<textarea id="textAr" maxlength="350" rows="6" onkeypress="check(this)"></textarea>

    function checkLines(textArea){
            var text = textArea.value;
            var linesNumber = text.split("\n").length;

           // alert("number of rows is: " + linesNumber);

            if(linesNumber > 10){
                ???
            }
     }

要停止写入字符,您可以使用元素的 event.preventDefault() method. We can do this by adding an event listener 代替 onkeypress 属性。

function checkLines(event){
    var text = this.value;
    var linesNumber = text.split("\n").length;

    // alert("number of rows is: " + linesNumber);

    if(linesNumber > 10){
        event.preventDefault();
    }
}
document.querySelector("#textAr").addEventListener("keypress", checkLines);

您还可以使用 event.key 获取按下的键。这将允许您仅使用回车键 ("Enter").

来防止换行
    if(linesNumber > 10 && event.key == "Enter"){
        event.preventDefault();
    }