blur() 无法以编程方式工作 |但在从用户启动时会这样做

blur() does not work programmatically | but does when initiated from the user

本文关键字:用户 启动 这样做 工作 方式 编程 blur      更新时间:2023-09-26

这适用于用户在单个输入表单上通过 ajax 提交输入后清除输入。

var tweet_input = document.getElementById( 'tweet_input' );
tweet_input.value='';
tweet_input.blur();

但是,在 3 个输入字段或 orm 上,这不会:

var input_url = document.getElementById( 'bookmark_input_url' );
    input_url.value='';
var input_title = document.getElementById( 'bookmark_input_title' );
    input_title.value='';
var input_tag = document.getElementById( 'bookmark_input_tag' );
    input_tag.value='';
input_title.blur();
input_url.blur();
input_tag.blur(); 

只有最后一个元素实际上是模糊的。 不确定其他两个发生了什么或如何进行故障排除。

基本上,我有在blur((上

触发的事件侦听器,它们在实际的用户blur((上工作正常,但是当我尝试以编程方式启动它们时,只有一个有效。

需要先有焦点。

input_title.focus();
input_title.blur();
...

这在我的情况下工作正常:

const fireEvent = (element, eventType="blur") => element && element.dispatchEvent(new Event(eventType));

现在我们可以从任何想要触发附加到任何元素的事件的地方调用此函数。

fireEvent(input_title)

参考