1

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

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

建议以“ ”格式列出User Name <userID>。因此,如果用户开始输入 123,则会弹出一个示例建议,即“Harvey Mann <1234>”。

问题是,如果用户选择该建议,我不想将整个建议文本插入到输入字段中 - 我只想插入用户 ID(在本例中为“1234”)。如果可能,我还希望能够将用户名(“Harvey Mann”)插入相邻的字段/区域。有没有办法做到这一点?

4

1 回答 1

4

由于您使用的是 CF 的内置自动建议实现,因此您只能访问一个返回值。因此,如果该值由多个“部分”组成,并且您希望将值的不同“部分”插入到不同的列中,则必须解析该值并从字符串中提取适当的部分。在您的示例情况下,您可以将该值视为由 < 分隔的列表。在这种情况下,您可以使用

trim(listfirst(form.userID, "<"))

和 id 'part' 与

replace(listlast(form.userID, "<"), ">", "")

或者,您始终可以使用 jQuery UI 自动完成实现——您必须为它编写自己的 javascript,但它比内置 cf 的实现给您更多的控制权。查看 jQuery UI 文档了解更多信息:http: //jqueryui.com/demos/autocomplete/

更新:再想一想,如果您只想在同一页面的另一个区域显示选定值的“名称”部分,您可以只使用 CF 的内置自动提示和一些 javascript 来实现。尝试将此代码添加到页面的 HEAD 部分:

<cfajaxproxy bind="javaScript:showName({userID})">
<script type="text/javascript">
showName = function(strUserId) {
 document.getElementById("someID").innerHTML = strUserId.split('<')[0];
}
</script>
于 2012-06-18T13:36:57.307 回答