Автозаполнение jQueryUI - невозможно отобразить возвращенный выбор (Coldfusion) - PullRequest
2 голосов
/ 10 октября 2019

Это сводит меня с ума. Я использую автозаполнение 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);

Должно быть что-то простое, что я здесь упускаю, но я не знаю, что это такое. Есть идеи?

1 Ответ

2 голосов
/ 11 октября 2019

См. Демонстрацию: jQuery UI |Автозаполнение |Пользовательские данные

Рекомендуется следующее:

$("#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;
  }
});

Это приводит к завершению функции без выполнения каких-либо дальнейших действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...