2015-06-01 75 views
0

我正在使用.keyup來過濾自動完成。使用.keyup函數來過濾自動完成

但它只允許我輸入第一個數字。所以如果我的數據是「蘋果」

當我鍵入A - 它顯示蘋果,但我不能鍵入「AP」隨着「P」消失。

我期待着我能寫出整個單詞而不是第一個字母。

代碼:

<input id="ac" /> <span></span> 

var validOptions = "@Url.Action("SerialProdNumStockSiteAutoComplete", "Ajax")?stocksitenum=LW&model=" + $("#Form_Prod_Num").val(); 
previousValue = ""; 

    $('#ac').autocomplete({ 
      autoFocus: true, 
      source: validOptions 
     }).keyup(function() { 
      var isValid = false; 
      for (i in validOptions) { 
       if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) { 
        isValid = true; 
       } 
      } 
      if (!isValid) { 
       this.value = previousValue 
      } else { 
       previousValue = this.value; 
      } 
     }); 

這是工作時,我用假數據,但是當我把它改爲url.action它只是工作的第一個字母,而不是整個單詞。

我確實有一個小提琴works - 但是當我添加我的「URL.action」它只接受第一個字母。 (大約有5000的值)

+0

你可能會提供一個小提琴或一些? – Alex

+0

我有一個工作http://jsfiddle.net/pxfunc/j3AN7/小提琴 - 但是,當我添加我的「URL.action」它只接受第一個字母... –

+0

嘗試在您的validOptions變量中使用單引號你用雙引號括起來:'var validOptions =「@ Url.Action('SerialProdNumStockSiteAutoComplete','Ajax')?stocksitenum = LW&model =」+ $(「#Form_Prod_Num」).val();' – NightOwlPrgmr

回答

0

在小提琴,你設置的可用選項作爲數組:

var validOptions = ["Bold", "Normal", "Default", "100", "200"] 

,如果你把你的行動的結果(如直接調用)和替換此入的jsfiddle,你會得到(從評論服用):

var validOptions = "B061030029,LL-XXX," 

,或者取決於是否在評論引號包含(不太可能):

var validOptions = ""B061030029,LL-XXX,"" 

無論哪種方式,這些都不一樣。

在瀏覽器中使用view-source來查看Url.Action正在呈現的內容。

你可以改變你的行動,返回字符串:

"[\"B061030029\", \"LL-XXX\" ]"; 

這將再給:

var validOptions = ["B061030029", "LL-XXX"] 
相匹配原有選項

爲了整潔,您可以使用PartialView做到這一點,並且仍然繼續以部分視圖而不是控制器的形式將行爲中的值作爲字符串列表和格式返回。

+0

有大約5千個值。不只是1. –

+0

然後你的jsfiddle將不起作用 - 我提供了一個方法來轉換Url.Action以按照請求匹配jsfiddle。問題中沒有提到有太多的價值觀。 –

+0

對不起,爲什麼它只顯示第一個字母? –

相關問題