Coldfusion autosuggest干扰我的jquery“;更改“;处理程序?

Coldfusion autosuggest干扰我的jquery“;更改“;处理程序?,jquery,events,coldfusion,autosuggest,Jquery,Events,Coldfusion,Autosuggest,我正在使用ColdFusion autosuggest作为我的用户ID字段。当用户开始键入用户ID时,会弹出一个用户ID列表(由cfc函数填充)。示例代码: <cfinput name="userID" type="text" value="#userID#" autoSuggest="cfc:Utilities.suggestUser({cfautosuggestvalue})" matchcontains="true" /> 问题是,当我单击autosuggest列表中的某个项

我正在使用ColdFusion autosuggest作为我的用户ID字段。当用户开始键入用户ID时,会弹出一个用户ID列表(由cfc函数填充)。示例代码:

<cfinput name="userID" type="text" value="#userID#" autoSuggest="cfc:Utilities.suggestUser({cfautosuggestvalue})" matchcontains="true" />
问题是,当我单击autosuggest列表中的某个项目时,在将所选条目注入表单字段之前会触发更改事件。例如,如果我正在查找用户“123456”,并且我开始键入“123”,然后在自动建议列表中看到它,我单击自动建议列表中的“123456”,然后触发更改事件,而表单字段的值仍然只有“123”。我尝试添加延迟(
$('#otherUserIDField').delay(1000).html(userID);
),但没有帮助。还有其他活动我可以使用吗?这有什么办法吗


如何仅在选择自动建议后执行代码?

我最终使用了
setTimeout
方法。正如@Esailija在评论中提到的,
delay
函数实际上并没有延迟html调用。我不能在新代码中使用“this”,因为延迟导致焦点不再在文本框上

$('#userID').change(function(){
    setTimeout(function(){
            $('#otherUserIDField').html($('#userID').val());
        }, 1000);
});

就个人而言,我会单独使用jQuery,而不是内置的ColdFusion ajax。这里有一个很好的例子,它是一个正在运行的演示:

.delay(1000)
是一个虚拟动画,它不会延迟你的
.html
callFYI-作为一个未请求的建议(ha)-我会坚持使用jQuery,避免使用cfform。cfform对于基本的原型设计来说是可以的,但我总是把它拆成碎片,让它做我想做的事情。jquery要丰富得多,并且通常有我在给定行为中需要的“部分”。作为一个也使用它来解决相同问题的人,我觉得重要的是要注意,您不能将信息从setTimeout函数中传递出去,所以如果您需要调用setTimeout中包装的代码来处理多个问题,请仔细编写代码。
$('#userID').change(function(){
    setTimeout(function(){
            $('#otherUserIDField').html($('#userID').val());
        }, 1000);
});