2017-03-06 76 views
0

我試圖實現一個自動完成搜索框,該框根據Javascript中選擇的下拉列表項目改變其自動完成文本。但是,使用if/else語句時,我無法使此自動完成功能正常工作。我已爲我下面的代碼:If/else語句與使用Ajax的自動完成搜索框結合

<script type="text/javascript"> 
      $("#searchTypeDD").change(function DDChange() { 
       var searchType = $('#searchTypeDD').val(); 
       var searchData = null; 
       var searchMethodName = null; 
       var searchTerm = $('#searchTermEntered').val(); 

       if (searchType == 'movieSearch') { 
        data = { name: searchTerm }; 
        searchMethodName = "GetmovieTitle"; 
       } 
       else { 
        data = { director: searchTerm }; 
        searchMethodName = "Getdirector"; 
       } 

       $("#searchTermEntered").autocomplete({ 
        source: function (request, response) { 
         $.ajax({ 
          url: "AutoCompleteService.asmx/" + searchMethodName, 
          dataType: "jsonp", 
          data: searchData, 
          success: function (data) { 
           response(data); 
          } 
         }); 
        }, 
        minLength: 2, 
        select: function (event, ui) { 
         log("Selected: " + ui.item.value + " aka " + ui.item.id); 
        } 
       }); 
      }); 

+0

您是否收到任何特定錯誤?另外,你是否使用這個特定的自動完成插件? https://jqueryui.com/autocomplete/ – Keith

回答

0

如果上面的代碼是你使用的是什麼,有一個錯字。你得的$:ajax代替$.ajax(見下文)

$(document).ready(function(){  
    $(".searchTermEntered").autocomplete({ 
     source: function(request, response) { 
      var searchType = $('.searchTypeDD').val(); 
      var searchData = null; 
      var searchMethodName = null; 
      var searchTerm = $('.searchTermEntered').val(); 

      if (searchType == 'movieSearch') { 
       searchData = { name: searchTerm }; 
       searchMethodName = "GetmovieTitle"; 
      } 
      else { 
       searchData = { director: searchTerm }; 
       searchMethodName = "Getdirector"; 
      } 

      $.ajax({ 
       url: "AutoCompleteService.asmx/" + searchMethodName, 
       dataType: "jsonp", 
       data: searchData, 
       success: function(data) { 
        response(data); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
     log("Selected: " + ui.item.value + " aka " + ui.item.id); 
     } 
    }); 
}); 

更新:我的代碼中有一個錯字。它已更新並應爲您工作。唯一需要注意的是你使用.NET,當.NET呈現頁面時,你的下拉列表的ID不會是searchTypeDD。 ASP.NET將一堆術語附加到控件ID的末尾,以確保它是唯一的,並提供了其父控件的用戶名和等等。所以,我建議你爲你的下拉控件做到這一點:

,並同您的輸入:

然後,當我們被選擇的控制上面的代碼將工作類名($(。xxx)選擇器)而不是ID($(#xxx)選擇器)。

+0

當我把$ .ajax,而不是我所說的它預計「:」 – Spiros

+0

我會給你一個啓動jQuery和AJAX的提示。始終查閱文檔。我不能告訴你它有多少次導致我進行黑客攻擊,並且從未開始工作,最終,我的語法不正確。看看我發佈的例子,因爲它是從jQuery網站派生的:https://jqueryui.com/autocomplete/#remote-jsonp – Keith

+0

我沒有完成代碼,但是,想讓你知道的方式這是寫的,它只會使用選定的值一次,它將始終是該值。您需要爲搜索類型下拉菜單的on change事件添加一個觸發器,以便在選擇導演或電影標題時更新類型。 – Keith