获取自动填充中元素的ID

时间:2011-08-24 09:38:21

标签: javascript jquery

我想获取

元素的ID
    <input type="text" id='4711_herstellerName' class='hersteller' />
    <input type="text" id='0815_herstellerName' class='hersteller' />
    <input type="text" id='1234_herstellerName' class='hersteller' />

我的JQuery Part看起来像这样:

    $(".hersteller").autocomplete("ajax/getHersteller.php", {
    width: 320,
    max: 4,
    highlight: true,
    scroll: true,
    scrollHeight: 300,
    formatItem: function(data, i, n, value) {

                        alert($(this).attr('id'));

                    var herstellernummer = value.split(" ")[0];
                    var herstellername = value.replace(herstellernummer,"");

                    return herstellername.trim();
    }
});

我想要的是一个警告框,内容为“4711_herstellerName”(当我更改第一个输入时)和“1234_herstellerName”(当我更改最后一个时),但我得到的只是“未定义”...我显然误解了文档。某种灵魂会给我一个方向吗?

也许还有另一种方法可以满足我的需求:此字段中的编辑(以及子选择选择)应该在不同的输入字段中更改值(由php脚本提供)。所有这些字段ID都是自动创建的,但是一个组的所有字段都以

形式的相同ID开头
  • [PID] _herstellerID
  • [pid] _herstellerName(这是我自动完成的那个
  • [PID] _herstellerLogo

我要做的是获取自动填充更改的ID,切掉pid-part,然后创建herstellerID和herstellerLogo id ...

  • 编辑1 更改了代码以使我的问题更加清晰
  • 编辑2 添加了我原本想要实现的内容

2 个答案:

答案 0 :(得分:3)

ipr101是正确的:jQuery自动填充不会将this设置为您要为其提供自动完成格式规则的对象。

this仅仅是函数表达式之外的任何内容。因此,如果您正确设置了周围的上下文,您可以使它工作:

$(".hersteller").each(function() {
   var $obj = $(this);
   $obj.autocomplete("ajax/getHersteller.php", {
      width:        320,
      max:          4,
      highlight:    true,
      scroll:       true,
      scrollHeight: 300,
      formatItem:   function(data, i, n, value) {
         alert($obj.attr('id'));

         var herstellernummer = value.split(" ")[0];
         var herstellername = value.replace(herstellernummer,"");

         return herstellername.trim();
      }
   });
});

(未经测试但合乎逻辑)

答案 1 :(得分:0)

我认为你的回调中的'this'引用不会引用“.hersteller”文本框;试试这个 -

alert($(".hersteller").attr('id'));