![](/img/trans.png)
[英]Simple .on('keydown') jQuery event not responding until next key is pressed
[英]keydown not triggering until key pressed twice
所以我有一个 div 我试图切换 class 取决于另一个 div 是否为空。
当前按下键时按下键没有任何反应,然后当按下第二个键时,显示样式切换为无。
这与在 div 中删除文本时相同,当 div 为空时它不会切换回显示块,但是当再次按下退格键时(一旦已经为空),则显示值会更改回块。
有什么想法吗?
HTML
<div id="textbox">
<div id="colon" class="consoleText consoleArea"><span class="consoleIcons">➔</span></div>
<div role="textbox" contenteditable="true" id="navtype" class="consoleText" tabindex="0" style="margin-left: 40px" onkeypress="return (this.innerText.length <= 37)" onpaste="return false;" spellcheck="false"></div>
<div class="consoleText"><span id="caret"></span></div>
<div class="placeholder">type here to change directory</div>
</div>
JavaScript
let consoleMsg = document.getElementById("navtype");
let consoleText = document.querySelector("[contenteditable]");
consoleText.onkeydown = function () {
if (consoleText.innerText) {
let placeholder = document.querySelector(".placeholder");
placeholder.style.display = "none";
} else {
let placeholder = document.querySelector(".placeholder");
placeholder.style.display = "block";
}
};
if(consoleText.innerHTML !== null || consoleText.innerHTML !== "" || consoleText.innerHTML !== undefined) {
let placeholder = document.querySelector(".placeholder");
placeholder.style.display = "block";
} else {
let placeholder = document.querySelector(".placeholder");
placeholder.style.display = "none";
}
检查 DIV 内容的最佳方法是 innerHTML。 您的代码应该监听 triggeringElement.innerHTML 而不是 keydown 事件。 如果输入元素是 go 为 triggeringElement.value。
问题是 using.onkeydown - 我应该使用的是.oninput -
.onkeydown 似乎有延迟 function 在添加输入之前被触发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.