Javascript:在正在重新提交的元素上重置所选焦点

Javascript:在正在重新提交的元素上重置所选焦点,javascript,focus,dust.js,Javascript,Focus,Dust.js,我正在使用,以便将Javascript模板呈现为HTML。使用dust.js,我基本上已经将我的页面分解为模板组件,这些组件会根据特定事件重新呈现。其中一个组件/模板在概念上如下所示: [标签][输入1][输入2][输入3] 此组件中的所有3个输入都有一个onBlur事件,用于重新计算其他输入的值,从而导致模板重新渲染。例如,如果用户修改了Input1的值,那么Input2和Input3的值都将被调整并重新提交 我重新提交模板而不是仅仅设置值的原因是模板包含根据值呈现的附加逻辑和元素(例如,某些

我正在使用,以便将Javascript模板呈现为HTML。使用dust.js,我基本上已经将我的页面分解为模板组件,这些组件会根据特定事件重新呈现。其中一个组件/模板在概念上如下所示:

[标签][输入1][输入2][输入3]

此组件中的所有3个输入都有一个onBlur事件,用于重新计算其他输入的值,从而导致模板重新渲染。例如,如果用户修改了Input1的值,那么Input2和Input3的值都将被调整并重新提交

我重新提交模板而不是仅仅设置值的原因是模板包含根据值呈现的附加逻辑和元素(例如,某些值将导致呈现错误消息或显示附加字段)

到目前为止还不错,但这会导致焦点问题。例如,如果用户修改Input1,然后单击Input2。onBlur将被触发,我将更新Input2和Input3的值,然后重新启动模板。这反过来会导致用户的焦点被丢弃,他们必须再次单击Input2

我需要一种方法来知道用户点击了Input2,这样我就可以在重新渲染完成后将焦点设置为它。由于onBlur事件在onFocus之前触发,因此我想不出任何方法来执行此操作


除了绕过模板渲染之外,还有其他解决方案吗?

我遇到了类似的问题。我通过将“blur”事件侦听器函数延迟大约100ms来解决这个问题,以允许在blur处理程序开始渲染之前触发另一个输入上的焦点事件