繁体   English   中英

获取从 ajax 调用动态添加的特定输入的值

[英]Getting the value of a specific input that is dynamically added from an ajax call

我想在onclick事件上获取特定输入的值

这个 function 从我的后端检索所有数据

Javascript

function getProjects() {
  $.ajax({
    method: 'GET',
    dataType: 'json',
    data: {
      functionToCall: 'project',
    },
    url: 'http://localhost/WBS/php/api/requests/get.php',
    success: (response) => {
      $.each(response, function () {
        $.each(this, function (index, value) {
          $('#project-body').append(
            `
            <tr>
                <td>
                  <input class="form-control projectid" type="hidden" name="projectid[]" value="${value.projectid}">
                </td>
                <td>
                  <input class="form-control projectName" type="text" name="projectName[]" value="${value.title}">
                </td>
                <td>
                  <input class="form-control description" type="text" name="description[]" value="${value.description}">
                </td>
                <td>
                  <input class="form-control estimatedTime" type="text" name="estimatedTime[]" value="${value.Estimated_time}">
                </td>
                <td>
                  <input class="form-control actualTime" type="text" name="actualTime[]" value="${value.Actual_time}">
                </td>
                <td>
                  <a class="btn btn-info addTask" href="Overview.html?id=${value.projectid}" role="button">
                    <i class="fa fa-angle-right" aria-hidden="true"> </i> Add task
                  </a>
                </td>
                <td>
                  <button value="${value.projectid}" type="button" name="deleteProject" class="btn btn-danger deleteProject">
                    <i class="fa fa-angle-right" aria-hidden="true"> </i> Delete project
                  </button>
                </td>
            </tr>

            `
          );
        });
      });
    },
    error: () => {
      console.error('Something went wrong with the getProjects function');
    },
  });
}

我想得到这个特定输入的值

<td>
    <input class="form-control projectid" type="hidden" name="projectid[]" value="${value.projectid}">
</td>

我试过用这个

  $(document).on('click', '.btn.btn-danger.deleteProject', () => {
    let id = $(this).find('tr').closest('.form-control.projectid');
    deleteProject(id); // this is an ajax call that deletes a project with said ID
  });

但是console.logging这在所有按钮点击上都返回未定义,我尝试对其进行硬编码

  $(document).on('click', '.btn.btn-danger.deleteProject', () => {
    let id = $('.btn.btn-danger.deleteProject').val();
    deleteProject(id);
  });

这会返回一个 ID,问题是它始终只返回第一个 ID。

我的问题是,如何从 onclick 事件中获取所述输入值?

closest测试元素本身及其ancestors是否匹配选择器。

您需要做的是:找到最接近单击按钮的tr ,然后在该tr内部找到输入,如下所示:

  $(document).on('click', '.btn.btn-danger.deleteProject', function() {
    const id = $(this).closest('tr').find('.form-control.projectid').val();
    deleteProject(id);
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM