Это сводит меня с ума. Я использую автозаполнение jQueryUI для получения пар имени клиента и идентификатора клиента. Пользователь должен иметь возможность начать вводить имя клиента и получить список предложений, выбрать его из списка, и после выбора идентификатор клиента должен быть назначен скрытому полю. Автозаполнение работает нормально до момента назначения выбранных значений. Пользователь может начать печатать, получить список предложений и выбрать один. На этом этапе значение в текстовом поле изменится на идентификатор клиента вместо имени клиента, что является проблемой в двух словах.
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)
показывает это, например, клиент:
item: Object {label: "Customer 4", значение: 4}
console.log(ui.item.label)
:
"Customer 4"
но, похоже, это просто не работает:
$('#enaCustomer').val(ui.item.label);
Должно быть что-то простое, что я здесь упускаю, но я не знаю, что это такое. Есть идеи?