jQueryUI自动完成功能-无法显示返回的选择(Coldfusion)

时间:2019-10-10 13:39:25

标签: jquery-ui coldfusion

这让我发疯。我正在使用jQueryUI自动完成功能来拉回客户名称和客户ID对。用户应该能够开始输入客户名称并获得建议列表,从列表中进行选择,并且在选择后,客户ID应该分配给一个隐藏字段。自动完成功能可以正常工作,直到分配选定的值为止。用户可以开始输入并获得建议列表,然后选择一个。此时,文本字段中的值将更改为客户ID而不是客户名称,这简而言之就是问题。

jQuery代码:

$( "#enaCustomer" ).autocomplete({
    source: "customerLookup.cfc?method=lookupCustomer&returnformat=json",
    minLength: 2,
    select: function(event, ui) {
        console.log(ui);
        console.log(ui.item.label);
        $('#enaCustomer').val(ui.item.label);
        $('#enaCusID').val(ui.item.value);
    }
});

CFC:

<cffunction name="lookupCustomer" access="remote" output="no" returnformat="JSON">

    <cfargument name="term" required="true" default="" />

    <!--- Define variables --->
    <cfset var returnArray = ArrayNew(1)>

    <!--- Do search --->
    <cfquery name="rsCustomers" datasource="myDB">
        SELECT      cusID, cusCustomer
        FROM        tblCustomers
        WHERE       cusCustomer LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#term#%" />
        ORDER BY    cusCustomer
    </cfquery>

    <!--- Build result array --->
    <cfloop query="rsCustomers">
        <cfset customerStruct = structNew() />
        <cfset customerStruct['value'] = cusID />
        <cfset customerStruct['label'] = cusCustomer />

        <cfset arrayAppend(returnArray, customerStruct) />    
    </cfloop>

    <!--- And return it --->
    <cfreturn returnArray />

</cffunction>

console.log(ui)向客户显示此信息:

项目:对象{标签:“客户4”,值:4}

console.log(ui.item.label)

"Customer 4"

但这似乎不起作用:

$('#enaCustomer').val(ui.item.label);

这里一定缺少一些简单的东西,但我不知道它是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

请参阅演示:jQuery UI | AutoComplete | Custom Data

建议以下几点:

$("#enaCustomer").autocomplete({
  source: "customerLookup.cfc?method=lookupCustomer&returnformat=json",
  minLength: 2,
  select: function(event, ui) {
    $('#enaCustomer').val(ui.item.label);
    $('#enaCusID').val(ui.item.value);
    return false;
  }
});

这将导致该函数结束而无需执行任何其他操作。