2009-11-17 71 views
3

我使用jQuery自動完成插件,並連接了一個輸入字段以從後端數據庫檢索值,隨後可以選擇文本。
然後我有一個第二個輸入字段,我用類似的方式連接了,但是我想在自動完成ajax調用中將第一個輸入字段的值作爲querystring參數傳遞,以便可以過濾自動完成結果。
我已經嘗試使用第一個輸入字段的.val()方法,但這似乎總是返回一個空字符串,除非我允許表單回發。我也嘗試過使用getElementById('xxx')。value,但是這返回一個空值。
有什麼辦法可以檢索在第一個字段中選擇的動態值,所以我可以將它傳遞給我的jQuery Ajax調用服務器?下面一些爲了簡潔,刪除
代碼:檢索一個jQuery自動完成字段

<% using (Html.BeginForm()) {%> 
    <script language="javascript"> 
     $(document).ready(function(){ 
      $("#Make").autocomplete('/MyController/AutoCompleteMake', { 
       dataType: 'json', 
       parse: function(data) { 
        var rows = new Array(); 
        for (var i = 0; i < data.length; i++) { 
         rows[i] = { data: data[i], value: data[i], result: data[i] }; 
        } 
        return rows; 
       }, 
       formatItem: function(row) { 
        return row; 
       }, 
       delay: 40 
      }); 

      $("#Range").autocomplete('/MyController/AutoCompleteRange?Make=' + $('input[name=Make]').val(), { 
       same as above ....... 
      }); 
     }); 
    </script> 
    <fieldset> 
     <legend>Fields</legend> 
     <p> 
      <label for="Make">Make:</label> 
      <%= Html.TextBox("Make") %> 
      <%= Html.ValidationMessage("Make", "*") %> 
     </p> 
     <p> 
      <label for="Range">Range:</label> 
      <%= Html.TextBox("Range") %> 
      <%= Html.ValidationMessage("Range", "*") %> 
     </p> 
<% } %> 

這是$(「輸入[名稱=製作]」),其常是返回即使一個已經選定的空值VAL()的一部分。

我剛剛開始使用jQuery和MVC,所以任何幫助將不勝感激。

回答

5

您需要使用extraParams功能:

$("#Make").autocomplete(url, { 
    extraParams: { 
     yourValue: function() { return $("input[name=Make]").val(); } 
    } 
}); 

這將被穿過的HttpContext目標通過。

這可以拉出如下:

string valueToUse = context.Request.QueryString["yourValue"]; 

從jQuery自動完成Documentation

往往是自動完成的領域取決於 另一個字段的值。在這種 情況下,extraParams選項 提供必要的動態 參數

爲你建立一個靜態的字符串您當前的代碼不起作用。你需要使用一個函數,它會動態地返回你感興趣的輸入字段的值。

+0

+1,你是對的,我完全和災難性地被誤解了。 – karim79 2009-11-17 13:59:07

+0

Karim :)不用擔心我們會盡最大努力! – GenericTypeTea 2009-11-17 14:00:39

+0

現貨。這讓我在牆上停留了幾個小時。乾杯。 – 2009-11-17 14:08:22