2015-06-16 22 views
0

我在我的網絡表單創建自動完成文本框下面的條件如何創建像SQL數據庫的谷歌的地方文本框中自動完成的文本框

  1. 如果鍵入的國家名稱,則自動完成建議應顯示存儲在我的數據庫中的國家,州和城市名稱的列表。

  2. 如果我輸入城市名稱,則自動建議應顯示從我的數據庫中的國家和Statename的,也

同樣Statename的有關實例:如果用戶類型

泰米爾納德

那麼結果將是

泰米爾納德邦,印度

如果在文本框中 用戶類型奈然後自動完成建議應

奈,泰米爾納德邦,印度

如果用戶類型侵蝕泰米爾納德邦

那麼結果應該是

Erode,tamilnadu,印度

  1. 我已經使用differen爲

我所做的到現在喜歡的城市,州和國家各t值表是香港專業教育學院的文本框,顯示唯一的城市搜索

我的問題是如何實現的結果正如我上面提到像輸入到文本框,並多次建議像谷歌搜索發生一個輸出多張項

請指引我,我已經搜索所有網站上,但我不能找到完美的解決方案

這裏是我的代碼腳本

<script type ="text/javascript" > 
    $(function() { 
     $('#<%=txtSearch.ClientID%>').autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "Default.aspx\getCityName", 
        data: "{'pre':'" + request.term + "'} ", 
        datatype: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        success: function (data) { 
         response($.map(data.d, function (item) { 

          return { 
           cityname: item.cityname, 
           country: item.country, 

           json: item 

          } 
         })); 

        }, 
       error: function (XMLHttpRequest, textStatus,        errorThrown) { 
         alert(textStatus); 
        } 

       }); 
      }, 

      focus: function (event, ui) { 
       $('#<%=txtSearch.ClientID%>').val(ui.item.cityname); 
       return false; 
      }, 
      select: function (event, ui) { 
       $('#<%=txtSearch.ClientID%>').val(ui.item.citycame); 
       return false; 
      } 

     }).data("ui.autocomplete")._renderItem = function (ul, item) { 
      return $("<li>") 
      .append("<a>City:" + item.cityname + "<br>Country :" + item.country + "</a>") 
      .appendTo(ul); 
     }; 

    }); 

</script> 

代碼我的web服務的:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static List<Searchcity> getCityName(String pre) 
    { 
     List<Searchcity> allcity = new List<Searchcity>(); 
     using(MydatabaseEntities dc = new MydatabaseEntities()) 
     { 
      allcity = (from a in dc.Searchcities 
         where a.cityname.StartsWith(pre) 
         select a).ToList(); 

     } 
     return allcity; 
    } 
+1

您需要將json對象轉換爲數組。然後將其傳遞給自動完成的數據。 –

+0

它不工作我不能實現多個輸入,如果我給城市名稱和國家名稱結果將不會顯示 –

+0

請提及如何處理SQL語句,如果用戶鍵入其他值如國家名稱,國家而不是城市名稱以及如何顯示在這種情況下的建議結果 –

回答

0

這可能會幫助你!

AJAX

var Autoarr = []; 

     $.ajax({ 
       url: "', 
       dataType: "json", 
       async: false, 
       success: function (data) { 
        var result = $.map(data, function (val, key) { 
         return { type: key, cityname: val.cityname, country: val.country}; 
        }); 

        for (var i = 0; i < result.length; i++) { 
         Autoarr[i] = result[i].cityname; 
        } 

       } 
      }); 

AUTOCOMPLETE

$(function() { 

       $("#category").autocomplete({ 
        source: Autoarr 
       }); 
      }); 
+0

根據您的要求,您必須使用此示例來處理返回值。 –

+0

其作品僅用於某些值,如果我輸入州名而不是城市名稱,那麼我應該如何檢索結果,以及如何確定用戶輸入的值以及我應該如何檢索值,請幫助我處理這種類型的場景感謝您的回覆.. –

+0

請提及如何處理SQL語句,如果用戶輸入其他值如州名,國家而不是城市名稱以及如何在這種情況下顯示建議結果 –

0

你必須寫與3個coloumns選擇SQL查詢。 1>國家2>州3>城市。 SQL查詢應該有3個條件。

像下面

if(select count(1) from Table where cityname like "@cityname") 
begin 

select city,state,country from table 

end 

else if(select count(1) from Table where state like "@statename") 
begin 

select 1 as city, state,country from table 

end 

else if(select count(1) from Table where country like "@countryname") 

begin 

select 1 as city, 1 as state, country from table 

end 

請使用AJAX JSON中得到這個值。

然後爲每個列添加','分隔符,例如(Chennai,Tamilnadu,India)。

如果任何色彩值爲1,則省略它。例如 (1,印度泰米爾納德邦,然後忽略1.如此泰米爾納德邦,印度)。你需要用這個例子來思考更多。如果您有不同的表格,請使用連接。