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");
         }
       }
});