【问题标题】:How can I display extra details in the autosuggest, but only ID in the input field?如何在自动建议中显示额外的详细信息,但在输入字段中仅显示 ID?
【发布时间】:2012-06-18 23:57:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: coldfusion autosuggest


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 非常感谢!这很棒。它甚至不是正则表达式 :) (我希望可能会返回单独的值,但怀疑不会......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多