2014-10-22 2 views
0

У меня есть Html.Textbox, который я разрешаю пользователю вводить имя клиента. Когда они достигают 3 или более символов, я вызываю функцию автозаполнения, которая возвращает список клиентов в раскрывающемся списке. Когда они делают выбор, я хотел бы сделать еще один вызов ajax, который вернет новое представление. Моя проблема в том, что когда я добавляю второй вызов, данные из автозаполнения удаляются. Это то, что я до сих пор:Два вызова ajax в одной функции

 $("#CustomerSearch_FullName").autocomplete({ 
      minLength: 3, 
      fontSize: '10px', 
      source: function (request, response) { 
       $.ajax({ 
        url: '@Url.Action("CustomerNameAutoComplete", "Customer")', 
        async: false, 
        data: { searchstring: $.trim(request.term) }, 
        success: function (data) { 
         response($.map(data, function (item) { 
          $('#CustomerIdDisplay').val(item.id); 
          $('#customer-select').val(item.id); 
          $('#Order_Customer_FirstName').val(item.firstname); 
          $('#Order_Customer_Email').val(item.email); 
          return { label: item.choice, id: item.id }; 
         })); 
        }, 

       }); 
      }, 
      select: function (event, ui) { 
       id = ui.item.id; 
       $.ajax ({ 
        url: '@Url.Action("Create", "Order")', 
        data: { customerId: id } 
       }); 
+0

Вы упоминаете, когда они делают выбор, который вы хотите запустить во втором звонке. почему бы вам не поместить второй вызов ajax в событие изменения jquery? –

ответ

1

Вам нужно всего лишь добавить возврат ложного к вашему отборному заявлению:

, 
select: function (event, ui) { 
id = ui.item.id; 
$.ajax ({ 
     url: '@Url.Action("Create", "Order")', 
     data: { customerId: id } 
     }); 
return false; 
} 

действия по умолчанию автозаполнения на «выбрать», это установить текстовое поле, независимо от того, что вы выберете из поля автозаполнения, если вы не готовы установить текстовое поле, потому что хотите выбрать другую базу вызовов для выбора, вам нужно добавить return false, чтобы предотвратить поведение по умолчанию. После завершения второго вызова вы должны установить текстовое поле whit, что хотите, в зависимости от вашего результата.

Смежные вопросы