8

我已经为此工作了一段时间,似乎无处可去。基本上,我按类对一堆输入进行了自动完成,但我需要获取特定的输入 id 来构建对象以发布 ajax(我必须对这个项目使用 POST 而不是 GET)。

$(".input_autocomplete").autocomplete({
  source: function( request, response ) {
  // here is where I get the hash from local storage,
  // reference the id and build the object
  // tried this.id, $(this).prop('id'), no luck
  $.ajax({
    url: '/somepath/filename.htm',
    contentType: 'application/json',
    dataType: 'json',
    type: 'POST',
    data: JSON.stringify(obj),
    success: function(json) {
      return {
        label: item.label,
        value: item.label
      }
    },
    error: function() {
      // error handling
    }
   }); // ajax
 } // source
});
4

4 回答 4

14

尝试:

$(this.element).prop("id");

或者:

this.element[0].id;

source回调内部,this指的是小部件实例。为了获取小部件附加到的元素,您应该使用this.elementjQuery 对象。

于 2012-10-13T01:47:47.680 回答
4

我在我的一个项目中尝试过。这对我有用:

$(this.element.get(0)).attr('id');
于 2012-10-13T02:15:00.683 回答
3

我的情况与您相似,user1572796这对我有用:

$(this).prop("id");
于 2016-06-08T20:20:30.230 回答
1

我只是花了一段时间自己拼凑一个解决方案。如果有帮助,这对我有用:

在你的类存在后调用它(对于大多数情况,这是在文档准备好的,对于我自己来说,我必须在数据表初始化 MyClassName 之后调用这个函数)

  $('.MyClassName').each(function(index) {


  MyID = $(this).attr("id")

  $('#'+MyID).autocomplete({

  source: function(request, response) {


        var elementID = this.element[0].id     //!!! This is what did the trick ***


            $.ajax({
                url: "/MyController/MyFunction",
                dataType: "json",
                data: {

                    MySearchTerm: $('#'+elementID).val()
                },
                success: function(data) {
                ...
于 2019-08-15T20:20:05.523 回答