代码之家  ›  专栏  ›  技术社区  ›  anatp_123

如何同时返回“id”和“text”

  •  1
  • anatp_123  · 技术社区  · 7 年前

    我正在使用 AutoComplete 按名称搜索。我可以输出名称,但在提交表单后,我想通过 emp_id 值,而不是 fullname . 如何修改它以获得 emp\U id 值,而不是 全名 ?

    我想在我提交表格后 emp\U id 不是 全名 价值

    search\u员工。氟氯化碳

    <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>
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   SOS    7 年前

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

    添加用于存储“id”的表单字段:

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

    修改组件以返回结构数组。每个结构包含两个名为“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 update the values of the two fields .

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