javascript - 在按钮单击事件上添加数据时如何限制 textarea maxlength?
问题描述
我正在执行以下步骤: 1- 一个最大长度为 50 的 textarea。 2- 单击一个按钮,将其文本附加到 textarea。
问题:如果继续单击按钮,Maxlength 验证不起作用。不想在按钮单击时检查 maxlength。
是否可以添加任何 textArea 事件侦听器来检查是否在按钮单击事件上添加数据。
<body>
<textarea id="test" rows="4" cols="50" maxlength="50">
</textarea>
<button onclick="appendData()"> Click </button>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(event) {
var txtArea = document.querySelector('textarea');
});
document.getElementById('test').addEventListener('change', function(event) {
alert('inside event listener of textarea 2')
})
function appendData(){
document.querySelector('textarea').value += "hello";
}
</script>
</body>
解决方案
您不想在 onclick javascript 中检查/执行此操作的任何具体原因?我认为没有这样的 TextArea eventListener 可用于完成此操作。无法使用其他键盘(onKeyUp、onKeyDown 或 onKeyPress 事件)事件,因为该值直接设置到输入元素中(我相信客户端将在键盘上按下一个键时使用它来实现 maxLength 功能)。
这可以在在 textarea 中设置新值之前通过 onclick javascript 中的大小检查来完成。
<html>
<head>
<script>
function hello() {
var ta = document.getElementById("test"),
maxlength = ta.maxLength,
value = ta.value,
textToAppend = "hello";
value += "hello";
totalLen = value.length;
if (totalLen>maxlength) {
return false;
}
else {
ta.value = value;
return true;
}
}
</script>
</head>
<body>
<textarea id="test" rows="4" cols="50" maxlength="50">
</textarea>
<button onclick="hello();"> Click </button>
</body>
</html>
如果 maxLength 检查仅在附加完整字符串后失败,则可以改进此代码以仅附加子字符串。
推荐阅读
- c++ - 无法转发声明 C typedef 结构 - 寻找替代建议
- azure - 在 Windows 启动时运行批处理文件
- sql - Azure SQL 数据库TransparentDataEncryptionProtector InternalServerError:处理请求时发生意外错误
- javascript - 在 Javascript 中发出顺序 POST 请求的最佳方法
- mysql - 是否可以有多个触发器具有相同的触发事件和动作时间(之前/之后)
- java - 为什么这段代码在 if 语句中给我错误
- android - Kotlin 中的 OTP 输入 - 库 android-otpview-pinview
- python - Python数据框搜索另一个数据框
- visual-studio-code - 如何完全断开 VSCode 访问互联网的连接?
- python-3.x - 从列表和 2D 列表一起创建一个 DataFrame