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

时间:2012-06-19 07:02:09

标签: jquery events coldfusion autosuggest

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

<cfinput name="userID" type="text" value="#userID#" autoSuggest="cfc:Utilities.suggestUser({cfautosuggestvalue})" matchcontains="true" />

当我选择autosuggest中的一个值时,我想触发一个处理程序,这样我就可以在其他地方使用所选的值。 JQuery代码:

$('#userID').change(function(){
    var userID = $(this).val();
    $('#otherUserIDField').html(userID);
});

问题是,当我点击autosuggest列表中的某个项目时,在将所选条目注入表单字段之前触发change事件。例如,如果我正在寻找用户“123456”并且我开始输入“123”然后在autosuggest列表中看到它,我点击autosuggest列表中的“123456”并触发change事件,而值表单字段仍然只是“123”。我尝试添加延迟($('#otherUserIDField').delay(1000).html(userID);),但没有帮助。我还可以使用其他活动吗?有没有办法解决?

如何在选择自动提取后才能执行代码?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我个人会单独使用jQuery stand而不是内置的ColdFusion ajax。以下是一个很好的示例,其中包含一个有效的演示:http://jacktraynor.blogspot.com.au/2012/02/jquery-autocomplete-using-coldfusion.html