2014-02-15 42 views
0

我的HTML是剑道自动完成的jQuery插件错误

<input type="text" id="id-5505Name" name="id-5505Name" value=" " class="autocomplete"/> 
    <input type="text" id="id-2333Name" name="id-2333Name" value=" " class="autocomplete"/> 
    <input type="text" id="id-2323Name" name="id-2323Name" value=" " class="autocomplete"/> 
    <input type="text" id="id-2322Name" name="id-2322Name" value=" " class="autocomplete"/> 

我的jQuery脚本

$(".autocomplete").kendoAutoComplete({ 
     minLength: 2, ignoreCase: true, placeholder: "Start typing...", 
     filter: 'contains', suggest: true, 
     dataTextField: "name", 
     dataValueField: 'id', 
     dataSource: { 
      type: "json", 
      serverFiltering: true, 
      transport: { 
       read: "PatientFileUpload/loaddrugname", parameterMap: function() { 
        return { 
         startsWith: $(this).data("kendoAutoComplete").value() 
        }; 
       }, 
       success: function (response) { 
        o.success(response); 
       } 
      } 
     }, select: function (e) { 
      var item = e.item; 
      var DataItem = this.dataItem(e.item.index()); 
      alert('Name : ' + DataItem.name + ', Id : ' + DataItem.id); 
      } 
    }); 

我的问题是:

在上面的代码我无法访问$(本)对象parameterMap函数,所以我需要访问当前对象,我不能更改JQuery选择器( '.autocompelete'),我无法使用id选择...任何想法

回答

1

使用闭包:

$(".autocomplete").each(function() { 
    var that = this; 

    $(this).kendoAutoComplete({ 
     minLength: 2, 
     ignoreCase: true, 
     placeholder: "Start typing...", 
     filter: 'contains', 
     suggest: true, 
     dataTextField: "name", 
     dataValueField: 'id', 
     dataSource: { 
      type: "json", 
      serverFiltering: true, 
      transport: { 
       read: "PatientFileUpload/loaddrugname", 
       parameterMap: function() { 
        return { 
         startsWith: $(that).data("kendoAutoComplete").value() 
        }; 
       }, 
       success: function (response) { 
        o.success(response); 
       } 
      } 
     }, 
     select: function (e) { 
      var item = e.item; 
      var DataItem = this.dataItem(e.item.index()); 
      alert('Name : ' + DataItem.name + ', Id : ' + DataItem.id); 
     } 
    }); 
}); 
1

尝试改变:

var DataItem = $(this).dataItem(e.item.index()); 

到:

var DataItem = this.dataItem(e.item.index()); 
+0

对不起,我问了一个错误的问题,我编辑它 – Farahatology