Javascript e、 日志(“e.key为[“+e.key+”]”)在事件处理程序的顶部?@NikhilVartak真的吗?好的,所以我把它改为e.key==32,但它仍然不起作用。这里还有什么问题吗?@YangK我没有投反对票(仅供参考),但我认为您应该在原始内容中添加
Javascript e、 日志(“e.key为[“+e.key+”]”)在事件处理程序的顶部?@NikhilVartak真的吗?好的,所以我把它改为e.key==32,但它仍然不起作用。这里还有什么问题吗?@YangK我没有投反对票(仅供参考),但我认为您应该在原始内容中添加,javascript,html,substring,Javascript,Html,Substring,e、 日志(“e.key为[“+e.key+”]”)在事件处理程序的顶部?@NikhilVartak真的吗?好的,所以我把它改为e.key==32,但它仍然不起作用。这里还有什么问题吗?@YangK我没有投反对票(仅供参考),但我认为您应该在原始内容中添加更新部分,说明问题在于包含,而不是密钥。因为e.key==''确实有效,问题在于内部if。最初,我们都关注一些真正没有问题的东西。简言之,如果您尝试/\s$/.test(chars)而不是chars.includes(“”),它应该可以工作!谢
e、 日志(“e.key为[“+e.key+”]”)代码>在事件处理程序的顶部?@NikhilVartak真的吗?好的,所以我把它改为
e.key==32
,但它仍然不起作用。这里还有什么问题吗?@YangK我没有投反对票(仅供参考),但我认为您应该在原始内容中添加更新部分,说明问题在于包含,而不是密钥。因为e.key==''
确实有效,问题在于内部if
。最初,我们都关注一些真正没有问题的东西。简言之,如果您尝试/\s$/.test(chars)
而不是chars.includes(“”)
,它应该可以工作!谢谢你的帮助。这在除ff之外的几乎所有浏览器中都有效。知道为什么它在ff中不起作用吗?再次感谢您的帮助Firefox在元素末尾插入换行符,因此chars
始终是新行(10)。如果您向代码中添加console.log(chars.charCodeAt(0))
,您可以自己调试它。这就是我实际尝试的。如果我这样做,我甚至可以添加一个空间。它阻止我添加任何空格。添加console.log语句如何改变它的行为?或者你的意思是你加了一张换行支票?当然这行不通,就像我说的Firefox总是在末尾插入换行符。您必须先删除换行符,然后检查最后一个字符。当然,用户可以只键入一个字母,用箭头键向后移动,然后键入任意数量的空格。或复制或粘贴包含空格的文本。如果您想在所有情况下都避免使用多个空格,那么整个方法都是错误的;这段对话已经结束了,仍然不起作用,伙计。它运行了一个错误,我可以继续添加空格。因此,请在不使用alert
语句的情况下尝试所有代码。这是一个大问题difference@YangK真奇怪。当您尝试在JSFIDLE或上面的代码段中添加多个空格时,是否发生了错误,或者错误是否发生在您的本地文件中?e.path[0]
未定义。在abovvecame片段中,因为我的想法还没有确定,因为我没有提供它是如何破碎的,现在我再次尝试,但无法做到。找到它后,按a空格键进入空格键,出现了,2个空格。必须有一个更多的tho,你将无法添加一个空间,它应该工作。我找到了一个解决方案,检查我的answer@WASD谢谢你的帮助。我真的很感激。在我正在制作的应用程序中,我不需要担心用户添加换行符,因为我已经在我的内容编辑分区中完全禁用了换行符。我回答了自己的问题,同时牢记这一点,所以我没有解决您指出的错误。但是,我现在意识到,您的实现在一般情况下比我的实现更好地回答了这个问题,这对下一个使用它的人很有用,因为他们可能不会像我一样在内容可编辑div中禁用换行符。我会接受你的回答而不是我的。“再次感谢。”投票通过并被接受。非常感谢您回来并解决根本问题。:)
This is allowed
This is not
document.getElementById("div").addEventListener("keydown", function(e) {
});
document.getElementById("div").addEventListener("keydown", function(e) {
function stop() {
alert("two whitespaces detected");
e.preventDefault();
return false;
}
});
document.getElementById("div").addEventListener("keydown", function(e) {
function stop() {
alert("two whitespaces detected");
e.preventDefault();
return false;
}
if (e.code == "Space" || e.key == " ") {
}
});
document.getElementById("div").addEventListener("keydown", function(e) {
function stop() {
alert("two whitespaces detected");
e.preventDefault();
return false;
}
if (e.code == "Space" || e.key == " ") {
var divContent = e.target;
var content = divContent.innerText;
var prevVal = content.substr(content.length - 1);
}
document.getElementById("div").addEventListener("keydown", function(e) {
function stop() {
alert("two whitespaces detected");
e.preventDefault();
return false;
}
if (e.code == "Space" || e.key == " ") {
var divContent = e.target;
var content = divContent.innerText;
var prevVal = content.substr(content.length - 1);
if (prevVal.trim() === '') {
stop();
} else {
console.log("nevermind");
}
}
});