Как не повторять код в функции выбора функции автозаполнения пользовательского интерфейса Jquery

#jquery-ui #autocomplete #repeat

#jquery-пользовательский интерфейс #автозаполнение #повторить

Вопрос:

У меня есть два поля автозаполнения пользовательского интерфейса jquery в большой форме (вероятно, с 40 или более полями). Пользователь может выполнять поиск двумя способами, используя два разных поля автозаполнения (либо по имени, либо по номеру учетной записи). Я заполняю другие поля в форме, когда пользователь выбирает свой результат поиска. Однако мне было интересно, есть ли более чистый способ сделать это.

На данный момент это то, что у меня есть.

     $( "#search-by-custname" ).autocomplete({
    source: "cust_search_by_name.php",
    minLength: 4,
    select: function(event, ui){
        $('#Custid').val(ui.item.Custid);
        $('#Alpha1').val(ui.item.Alpha1);
        $('#CustName').val(ui.item.CustName);
    }
    });
    $( "#search-by-custalpha1" ).autocomplete({
    source: "cust_search_by_alpha1.php",
    minLength: 4,
    select: function(event, ui){
        $('#Custid').val(ui.item.Custid);
        $('#Alpha1').val(ui.item.Alpha1);
        $('#CustName').val(ui.item.CustName);
    }
    });
  

Файлы php собирают данные из удаленного источника данных, и все работает нормально.

Проблема в том, что если я дважды буду ссылаться на все эти поля внутри каждого поля автозаполнения, это будет много строк кода… Мне было интересно, есть ли более чистый способ сделать это.

Я поиграл с написанием своей собственной функции, но я новичок в javascript и jquery.

Ответ №1:

Я не уверен на 100%, что это сработает, но я не понимаю, почему это не сработало бы.

     var selectFunc = function(event, ui){
        $('#Custid').val(ui.item.Custid);
        $('#Alpha1').val(ui.item.Alpha1);
        $('#CustName').val(ui.item.CustName);
    };

    $( "#search-by-custname" ).autocomplete({
    source: "cust_search_by_name.php",
    minLength: 4,
    select: selectFunc
    });
    $( "#search-by-custalpha1" ).autocomplete({
    source: "cust_search_by_alpha1.php",
    minLength: 4,
    select: selectFunc
    });