AJAX自动完成更改值不会触发它

时间:2018-05-14 16:59:48

标签: javascript jquery ajax autocomplete tampermonkey

我正在编写一个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来触发它,这也没有用。

我不是专家,但是我被困住了,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

很抱歉,我似乎无法专注于该元素,因为我保持DEV控制台处于打开状态,正如已经在这里回答:https://stackoverflow.com/a/15859155/8633664