0

我有一个自动完成功能。当我单击其中一个列表时,它将影响下拉列表的禁用/启用条件。

其结构如下。我有带有 id 的 div,#select-ac这是主要的触发器。.table-autocomplete-value但我也有一个包含一些属性数据的自动完成列表的触发器。我想当我点击时table-autocomplete-value,我会得到属性的值key但是从我制作的代码中,我没有得到属性 key 的值

*但是我想要jQuery中#select-ac中的那个元素。谁能帮我?

$(document).ready(function() {
  $('#select-ac').on("click", function (e) {
    $('.table-autocomplete-value').on('click', function () {
          let currentIndex = $(this).data('key');
       console.log('the value is: ' + currentIndex)
    })
  });
});
.hidden{
  display:none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="value  company-name-form-container" style="margin-left: -10px;">
  <div id="select-ac"></div>
    <div class="form-group">
      <input class="hidden hidden-singleSelectAutoComplete" type="text" name="account-companyName" value="">
      <input type="text" class="form-control" id="aciaccountcompanyName" placeholder="Nama Perusahaan" name="account-companyNameUserInput" value="" hx-trigger="keyup change delay:200ms" hx-get="/company-name-ac" hx-vars="'account-userInput':jQuery('#aciaccountcompanyName').val(),'account-inputName':'account-companyName' " hx-target="#acaccountcompanyName">
      <div id="acaccountcompanyName" class="">
        <table class="table-autocomplete" id="rac55dab6fdf7f344918966039a24093d68">
          <tbody>
            <tr>
              <td class="table-autocomplete-value" tabindex="22" data-key="22" data-industrysize="" data-industrytypeid="" data-letid="">ABADI JAYA PACKING</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="23" data-key="23" data-industrysize="" data-industrytypeid="" data-letid="">ACER STORE</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="24" data-key="24" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA BUANA PERKASA</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="25" data-key="25" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA TEKNIK</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="26" data-key="26" data-industrysize="" data-industrytypeid="" data-letid="">ADITYA SRIWIJAYA</td>
            </tr>
              </tbody>
        </table>
      </div>
    </div>
</div>

4

2 回答 2

0

如果您从容器中委派并且您的自动完成不会弄乱 HTML,那么这是可行的

$(function() {
  $('.company-name-form-container').on("click", '.table-autocomplete-value', function() {
    let currentIndex = $(this).data('key');
    console.log('the value is: ' + currentIndex)
  });
});
.hidden {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="value  company-name-form-container" style="margin-left: -10px;">
  <div id="select-ac"></div>
  <div class="form-group">
    <input class="hidden hidden-singleSelectAutoComplete" type="text" name="account-companyName" value="">
    <input type="text" class="form-control" id="aciaccountcompanyName" placeholder="Nama Perusahaan" name="account-companyNameUserInput" value="" hx-trigger="keyup change delay:200ms" hx-get="/company-name-ac" hx-vars="'account-userInput':jQuery('#aciaccountcompanyName').val(),'account-inputName':'account-companyName' "
      hx-target="#acaccountcompanyName">
    <div id="acaccountcompanyName" class="">
      <table class="table-autocomplete" id="rac55dab6fdf7f344918966039a24093d68">
        <tbody>
          <tr>
            <td class="table-autocomplete-value" tabindex="22" data-key="22" data-industrysize="" data-industrytypeid="" data-letid="">ABADI JAYA PACKING</td>
          </tr>
          <tr>
            <td class="table-autocomplete-value" tabindex="23" data-key="23" data-industrysize="" data-industrytypeid="" data-letid="">ACER STORE</td>
          </tr>
          <tr>
            <td class="table-autocomplete-value" tabindex="24" data-key="24" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA BUANA PERKASA</td>
          </tr>
          <tr>
            <td class="table-autocomplete-value" tabindex="25" data-key="25" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA TEKNIK</td>
          </tr>
          <tr>
            <td class="table-autocomplete-value" tabindex="26" data-key="26" data-industrysize="" data-industrytypeid="" data-letid="">ADITYA SRIWIJAYA</td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

于 2021-10-05T07:15:52.303 回答
0

.on('click')事件监听器将为所有具有相同变量的标签注册。

$(function() {

  //Register your event handler for each item with the same class
  $('.table-autocomplete-value').on("click", function (e) {

    //Get the data from the select item
    let itemKeyVal = $(this).data('key');

    //Return (cancel action) if content is empty
    if(!itemKeyVal)
      return;

    //Only for demo purpose
    $('[response-tag]').text(itemKeyVal);

  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Only for demo purpose -->
<p style="color:red;" response-tag></p>

<div class="value  company-name-form-container" style="margin-left: -10px;">
  <div id="select-ac"></div>
    <div class="form-group">
      <input class="hidden-singleSelectAutoComplete" type="hidden" name="account-companyName" value="">
      <input type="text" class="form-control" id="aciaccountcompanyName" placeholder="Nama Perusahaan" name="account-companyNameUserInput" value="" hx-trigger="keyup change delay:200ms" hx-get="/company-name-ac" hx-vars="'account-userInput':jQuery('#aciaccountcompanyName').val(),'account-inputName':'account-companyName' " hx-target="#acaccountcompanyName">
      <div id="acaccountcompanyName" class="">
        <table class="table-autocomplete" id="rac55dab6fdf7f344918966039a24093d68">
          <tbody>
            <tr>
              <td class="table-autocomplete-value" tabindex="22" data-key="22" data-industrysize="" data-industrytypeid="" data-letid="">ABADI JAYA PACKING</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="23" data-key="23" data-industrysize="" data-industrytypeid="" data-letid="">ACER STORE</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="24" data-key="24" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA BUANA PERKASA</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="25" data-key="25" data-industrysize="" data-industrytypeid="" data-letid="">ADIJAYA TEKNIK</td>
            </tr>
            <tr>
              <td class="table-autocomplete-value" tabindex="26" data-key="26" data-industrysize="" data-industrytypeid="" data-letid="">ADITYA SRIWIJAYA</td>
            </tr>
              </tbody>
        </table>
      </div>
    </div>
</div>

于 2021-10-05T07:29:43.637 回答