获取自动补全中元素的ID

Get the ID of an element within an autocomplete

本文关键字:元素 ID 获取      更新时间:2023-09-26

我想获取一个元素的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部分是这样的:

    $(".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部分,并创建herstellerID和herstellerLogo ID名称…

  • EDIT 1更改代码,使我的问题更清楚
  • EDIT 2添加了我最初想要实现的

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();
      }
   });
});

(未经测试但符合逻辑)

我认为你的回调中的'this'引用不会指向"。hersteller"文本框;试试这个-

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