Javascript 为什么这个文本字段在morphdom中会失去焦点?

Javascript 为什么这个文本字段在morphdom中会失去焦点?,javascript,dom,virtual-dom,Javascript,Dom,Virtual Dom,下面是一个人为的例子,它可以解决我的问题。有一个简单的文本字段,其中包含一条消息,显示字符数是否为偶数。如果我将消息移到textfield下面,morphdom似乎只看到textfield的值发生了更改,因此它不会重建输入节点,这意味着控件保持焦点。如果我将消息保留在textfield上方,那么morphdom将重建控件,尽管我正在指定一个id 从文件中 此外,该模块使用的算法将自动匹配具有相应ID且在原始和目标DOM树中都可以找到的元素 代码示例 编辑 当前的行为是,如果在字段中键入1个字

下面是一个人为的例子,它可以解决我的问题。有一个简单的文本字段,其中包含一条消息,显示字符数是否为偶数。如果我将消息移到textfield下面,morphdom似乎只看到textfield的值发生了更改,因此它不会重建输入节点,这意味着控件保持焦点。如果我将消息保留在textfield上方,那么morphdom将重建控件,尽管我正在指定一个id

从文件中

此外,该模块使用的算法将自动匹配具有相应ID且在原始和目标DOM树中都可以找到的元素

代码示例

编辑

当前的行为是,如果在字段中键入1个字符,文本字段将保持焦点(良好),但如果在字段中键入第二个字符并显示“偶数字符数!”消息,则文本字段将失去焦点(不良)

所需的行为是,即使显示消息,文本字段也应保持焦点。


使用
id
.focus()
添加到输入中
看到这个了吗

解决方案 请参阅更新的代码,

input.addEventListener("input", function(e) {
      text = e.target.value;
      var newRootDiv = createView();
      morphdom(origRootDiv, newRootDiv);

      // added the input with Id here
      document.getElementById('this-should-help-right').focus();
    });


我添加了
document.getElementById('this-should-help-right').focus()
morphdom
调用之后。因此,我认为问题已经解决了

从您的问题中,您想在单击外部时重置输入字段吗?@saifudeenni否。我在问题中添加了一些更多信息,希望澄清。谢谢虽然这个简单的示例(我创建这个示例只是为了演示这个问题),但它并不适合我的应用程序,它使用morphdom渲染整个应用程序。每次我渲染UI时,必须跟踪应用程序中的哪个字段是焦点,并重新聚焦,这是一件痛苦的事情。我假设morphdom支持这个用例,我希望我在库中做了一些错事。需要手动设置焦点违背了morphdom的全部意义。
input.addEventListener("input", function(e) {
      text = e.target.value;
      var newRootDiv = createView();
      morphdom(origRootDiv, newRootDiv);

      // added the input with Id here
      document.getElementById('this-should-help-right').focus();
    });