我正在为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);
),但没有帮助。我还可以使用其他活动吗?有没有办法解决?
如何在选择自动提取后才能执行代码?
答案 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