javascript - javascript insertBefore 在 addEventListener 上只有一次
问题描述
我有一个input type="number"
字段,我想控制不插入负数。这样做addEventListener
会在您输入该字段的每个数字上执行。
var number = document.querySelector("input[type=number]")
number.addEventListener('input', function() {
var valeur = number.value
if (valeur.startsWith("-")) {
erreur = document.createElement("div")
erreur.innerHTML = "No negative numbers."
number.appendChild(erreur)
number.parentNode.insertBefore(erreur, number.nextSibling);
} else {
erreur.remove()
}
})
<input type="number" step="any" name="amount">
我应该更改什么以使消息仅显示一次?
解决方案
您应该将 div 的创建放在 if 条件之外
let erreur = document.createElement("div")
number.addEventListener('input', function() {
var number = document.querySelector("input[type=number]")
let erreur = document.createElement("div")
number.addEventListener('input', function() {
var valeur = number.value
if (valeur.startsWith("-")) {
erreur.innerHTML = "No negative numbers."
number.appendChild(erreur)
number.parentNode.insertBefore(erreur, number.nextSibling);
} else {
erreur.remove()
}
})
<input type="number" step="any" name="amount">
推荐阅读
- c - 生成和捕获无效指令
- deployment - 如何在 Kubernetes 中按特定顺序配置 Pod 初始化?
- sql-server - 机器学习服务器远程会话设置失败
- neural-network - 评估衡量神经网络模型的性能
- vb.net - 监视目录的最佳方法是什么?
- logstash - 使用外部字典翻译过滤器和刷新行为
- memory-leaks - 如何在 tracemalloc 快照比较(python 3.6)中从回溯中获取更多帧?
- php - 打印多维数组的问题
- mysql - 在 Ubuntu 18.04 WSL 上安装无人值守的 MySQL 8 社区
- javascript - 如何使用 Mocha-enzyme 测试创建 Blob 并将文件保存为 csv?