按键文本不传递给textarea元素



我有一个文本区域元素,它分配了一个按键事件处理程序。按键事件处理函数的作用是对文本区域强制字符限制。

当我在浏览器中的文本区域单击时,我得到了光标,如果我开始键入,我将击中JavaScript中的断点,其中有按键事件处理程序。该处理程序不会抛出异常,但是一旦函数完成,我输入的字符不会显示在文本区域中。

这种情况发生在webview2浏览器的桌面应用程序中,如果web应用程序组件直接显示在Chrome或Edge中也会发生。

如果我从文本区域元素中删除按键事件处理程序,我就可以在文本区域中键入。

function maxLengthKey(field, maxChars) {
event.returnValue = false;
if (field.value.length >= maxChars) {
alert("too many characters.");
return false;
} else {
event.returnValue = true;
}
}
<textarea name="textArea1" rows="2" cols="20" id="textArea1Notes" tabindex="18" onkeypress="return maxLengthKey(this, 800);"></textarea>

答案是设置事件。returnValue = false防止事件冒泡到任何其他事件处理程序。

这是"老派的"。相当于event.preventDefault()。请参阅此链接https://developer.mozilla.org/en-US/docs/Web/API/Event/returnValue

最新更新