Javascript 获取自动完成中元素的ID

Javascript 获取自动完成中元素的ID,javascript,jquery,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' /> 我想要的是一

我想得到一个元素的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' />
我想要的是一个包含“4711_herstellerName”(当我更改第一个输入时)和“1234_herstellerName”(当我更改最后一个输入时)内容的警报框,但我得到的只是“未定义”。。。我显然误解了文件。善良的灵魂能给我指引方向吗

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

  • [pid]\u Herstellid
  • [pid]\u herstellerName(这是我自动完成的一个
  • [pid]\u Hersteller标志
我试图做的是获取自动完成已更改的ID,切掉pid部分,并创建herstellerID和herstellerID名称

  • 编辑1更改代码以使我的问题更清楚
  • 编辑2添加了我最初想要实现的目标

我认为您回调中的“this”引用不会指向“.hersteller”文本框;请尝试以下操作-

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

ipr101的权利:jQuery Autocomplete不会将
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();
      }
   });
});

(未经测试但符合逻辑)

这很好-只要我在类hersteller中只有一个字段-不幸的是,我可以有几个字段(这是使用类的原因:))谢谢您的输入,nonthelessThat非常有效:)您是一位绅士和学者:)试试这个您有一些格式问题。@Noma“选择”事件与此有什么关系?你建议OP如何使用它?
$(".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();
      }
   });
});