这让我发疯。我正在使用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);
这里一定缺少一些简单的东西,但我不知道它是什么。有什么想法吗?
答案 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;
}
});
这将导致该函数结束而无需执行任何其他操作。