如何 return 同时 "id" 和 "text"

How to return both an "id" and "text"

我正在使用 AutoComplete 按名称搜索。我能够输出名称,但在提交表单后,我想传递 emp_id 值,而不是 fullname。如何修改它以获得 emp_id 值,而不是 fullname

我希望在提交表单后得到 emp_id 而不是 fullname 值。

search_employee.cfc

<cfcomponent>
    <cffunction name="queryNames" access="remote">
        <cfargument name="searchPhrase" />

        <cfquery name="query_names"  datasource="">
            SELECT  fullname ,emp_id ....
        </cfquery>

        <cfset result = arrayNew(1) />

        <cfloop query="query_names">
            <cfset ArrayAppend(result, query_names.fullname) />

        </cfloop>


        <cfreturn result />
    </cffunction>
</cfcomponent>

JavaScript

<script>
    $(document).ready(function() {
        $('.gettingName').autocomplete({

            source: function(query, response) {
                $.ajax({
                    url: "test.cfc?method=queryNames&returnformat=json",
                    dataType: "json",
                    data: {
                        searchPhrase: query.term
                    },
                    success: function(result) {
                        response(result);
                    }
                });
            }
        });

</script>

您的意思是显示所选的 "FullName",但将其 ID 存储在另一个表单字段中?

添加用于存储 "id" 的表单域:

  <input id="gettingName">
  <input id="theValue">

将组件修改为return结构数组。每个结构包含两个名为 "value" (id) 和 "label" (fullName) 的键。

<cfloop query="local.query_names">
    <cfset local.data = {"value": emp_id, "label": fullName}>
    <cfset ArrayAppend(local.result, local.data) />
</cfloop>

在javascript中,使用select event to update the values of the two fields

select: function(event, ui) {
    $('#gettingName').val(ui.item.label);
    $('#theValue').val(ui.item.value);
    return false; 
},