0

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

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

当我选择自动建议中的一个值时,我想触发一个处理程序,以便我可以在其他地方使用选定的值。jQuery代码:

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

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

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

4

2 回答 2

1

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

$('#userID').change(function(){
    setTimeout(function(){
            $('#otherUserIDField').html($('#userID').val());
        }, 1000);
});
于 2012-06-19T08:02:59.443 回答
1

就个人而言,我会单独使用 jQuery 而不是内置的 ColdFusion ajax。这是一个很好的例子,带有一个工作演示:http: //jacktraynor.blogspot.com.au/2012/02/jquery-autocomplete-using-coldfusion.html

于 2012-06-21T01:14:48.627 回答