2010-12-15 63 views
1

我有一個完美的自動完成的字段,並從數據庫中獲取數據。當用戶從響應中選擇結果時,我想將所選項目的ID保存在隱藏字段中。Jquery AutoComplete:如何獲取選定的項目ID?

這裏是代碼我使用自動完成

$jQNetbmis("input#txt_client_name").autocomplete("autosuggest_clientmaster.php", { 
     width: 160, 
     mustMatch: true, 
     selectFirst:false, 
     formatResult: function(row) { 
      var resStr = row.toString(); 
      temp = resStr.substring(0,resStr.indexOf("+")); 
      return temp; 
     }, 
     formatItem: function(row, i, max) { 
      var resStr = row.toString(); 
      var temp = resStr.substring(0,resStr.indexOf("+")); 
      return temp; 
     } 
    }); 

以下是迴應,我得到我輸入n

name 1+50 
Name 2+85 
Name 3+86 
Name 4+98 
Name 5 +103 

如果用戶選擇1名我要救50到隱藏的領域。

我使用的是自動完成 - jQuery插件1.0.2

Krishnik

+0

我不理解對部分「以下是迴應,我得到我按下N」你能更清楚或提供更多信息?如果你知道你想要隱藏的領域,那麼爲什麼你不能? '$('input#hidden-field')。attr('value',yourNumberHere);' – matthewpavkov 2010-12-15 07:59:53

+0

@matthewpavkov當我按下鍵盤上的字母'n'時,從服務器得到的響應。它與n一起盯着它們的名字以及它們的ID。服務器以「Title + id」的形式發回響應。 formatItem將從結果中剝離+ id部分,並僅顯示標題。所以,如果用戶選擇名稱2我想獲得ID 85並將其保存在隱藏字段,以便我可以稍後使用它。很抱歉讓你困惑..... – Nick 2010-12-15 09:01:30

回答

1

可以使用result處理程序來做到這一點。如何你可能希望做到這一點的一個例子是:

$('input#txt_client_name').result(function(event, data){ 
    $('input#hidden_field').val(data.substring(data.indexOf('+') + 1)); 
}); 

的處理程序運行每次用戶選擇一個項目的時間。另外,您可能想使用jQuery UI自動完成而不是此插件,該插件已被棄用。

+0

謝謝Yi Jiang我不得不使用data [0]而不是data.indexOf。並做了一些改變。 – Nick 2010-12-15 11:18:17

0

jQuery UI有一個很好的自動完成小部件,它有很好的文檔記錄:http://jqueryui.com/demos/autocomplete/。你的情況也是如此,所以通過例子。

+0

他實際上並沒有使用jQuery UI Autocomplete插件 - 當前版本爲1.8.x,並且他提供的代碼中使用的函數不存在於jQuery UI Autocomplete中。他使用這個插件:http://resource.de/jquery-plugins/jquery-plugin-autocomplete/ – 2010-12-15 08:10:27

0

我真的不知道您使用的自動完成功能,但問題似乎不是來自它。

正好連接的ID與隱藏字段的現有值:

$jQNetbmis("input#txt_client_name").autocomplete("autosuggest_clientmaster.php", { 
    width: 160, 
    mustMatch: true, 
    selectFirst:false, 
    formatResult: function(row) { 
     var resStr = row.toString(); 
     //temp = resStr.substring(0,resStr.indexOf("+")); 
     var temp = resStr.split('+'); 
     $('input#hidden_field').val($('input#hidden_field').val()+'+'+temp[1]); 
     return temp[0]; 
    }, 
    formatItem: function(row, i, max) { 
     var resStr = row.toString(); 
     var temp = resStr.substring(0,resStr.indexOf("+")); 
     return temp; 
    } 
}); 
+0

formatResult,formatItem這兩個都將被稱爲每個項目在restult集。所以我每次只會得到最後一個值 – Nick 2010-12-15 11:20:03