这个问题在这里已有答案:
我正在编写一个tampermonkey脚本来自动填充字段。它是一个事件管理站点,所以有像group,summary等字段。我想要更改的字段有这个ID:名为sys_display.incident.assigned_to,我可以使用默认的document.getElementById(assignedTo)更改它的值。价值=“某人”。但由于它是一个自动完成字段,每当我通过JS更改它时,它似乎不会触发AJAX自动完成本身,因为它验证了这一点并使用此信息填充其他字段。
要素如下:
<input id="sys_display.incident.assigned_to" name="sys_display.incident.assigned_to" aria-labelledby="label.incident.assigned_to" type="text" autocomplete="off" autocorrect="off" value="Gabriel Bocon" ac_columns="email" ac_order_by="name" data-type="ac_reference_input" data-completer="AJAXTableCompleter" data-dependent="assignment_group" data-ref-qual="" data-ref="incident.assigned_to" data-ref-key="null" data-ref-dynamic="false" data-name="assigned_to" data-table="sys_user" class="form-control element_reference_input" style="; width:160px" spellcheck="false" onfocus="if (!this.ac) addLoadEvent(function() {var e = gel('sys_display.incident.assigned_to'); if (!e.ac) new AJAXTableCompleter(gel('sys_display.incident.assigned_to'), 'incident.assigned_to', 'assignment_group', ''); e.ac.onFocus();})" aria-required="true" tabindex="-1">
当我单击它(焦点)时,它会触发自动完成并更新接收以下属性的DOM:
role="combobox" aria-autocomplete="list" aria-owns="AC.incident.assigned_to" aria-activedescendant=""
我当前的脚本片段是这样的:
setTimeout(function(){
var analyst = GM_getValue('analyst');
var assignedTo = document.getElementById("sys_display.incident.assigned_to");
assignedTo.setAttribute("tabindex", "-1");
setTimeout(function() {
assignedTo.value = analyst;
}, 1000);
}
我设置了一个超时,以便页面完全加载,即使脚本设置为仅在空闲时运行。我甚至设置了一个tabindex,所以我可以插入和退出它,但无济于事。我尝试使用jQuery来触发它,这也没有用。
我不是专家,但是我被困住了,非常感谢任何帮助。
对不起,似乎我无法专注于元素,因为我保持DEV控制台打开,正如已经在这里回答:https://stackoverflow.com/a/15859155/8633664