2010-01-14 49 views
1

我想在幾個輸入框中使用jquery自動完成插件。爲了保持我的代碼DRY,我想將自動完成功能綁定到類,並在自動完成功能中傳遞已將其稱爲額外參數的字段的ID。我所掙扎的是獲得調用函數的字段的id。下面是我正在做的代碼示例;任何人都可以看到問題嗎?如何獲取調用jquery自動填充函數的控件的id?

 $(".className").autocomplete('<%=Url.Action("Method", "Controller") %>', { 
      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; 
      }, 
      extraParams: { 
       extra: function() { 
        var Field1 = $(this).attr('id'); 
        var Field2 = $("#Field1").val(); 
        var Field2 = $("#Field2").val(); 
        var Field3 = $("#Field3").val(); 
        return Field1 + "$" + Field2 + "$" + Field3 + "$" + Field4; 
       } 
      }, 
      delay: 40, 
      autofill: true, 
      selectFirst: false, 
      multiple: false 
     }); 

回答

2

確定這個傳遞到您的extraParams功能?如果沒有,那麼你可以使用類似:

$(".className").each(function(){ 
    var el = $(this); 
    ..... 
     extra: function() { 
      var Field1 = el.attr(id); 
     } 
}); 

這將允許你給每個自動完成綁在自己的特定元素。

+0

@ queen3 - 我不確定(this)是否傳入extraParams函數。看看你的例子,我看不出如何將它與自動完成功能(我是一個jQuery新手)。你能提供更多的細節嗎? – 2010-01-14 15:47:28

+0

在「var el = $(this)」行上,您_fix_變量。現在,「el」將可用於所有內部函數,而不管它們何時被調用。因此,您可以訪問您的.autocomplete所附的元素。 – queen3 2010-01-14 15:56:15

+0

@ queen3 - 非常好,我剛剛添加了el.autocomplete(....部分在變量實例下方,它的工作方式與預期的一樣。感謝您的幫助。 – 2010-01-14 16:24:26

相關問題