javascript - 使用 Javascript 获取提交按钮的父表单

标签 javascript html jquery

我正在尝试获取提交按钮的父表单。由于ID是动态生成的,所以我不知道。我确信有更好的方法来做到这一点,所以其他建议也很好,但如果可以按照我的方式完成,我也将不胜感激。

表格:

<!--Form for sending policy reminders to users-->
<form id="sendReminderForm{{ user.id }}" method="post" action="">
    <input type="hidden" name="policyId" value="{{ policy.id }}">
    <input type="hidden" name="userId" value="{{ user.id }}">
    <button class="btn btn-warning btn-xs"
            onclick="sendReminder(event)"
            type="submit">
        <span class="fa fa-paper-plane"></span> Remind
    </button>
</form>

JS:

// Send Policy notification to user
function sendReminder(e) {
    e.preventDefault();

    let data = new FormData(e.target.name.get(0));

    $.ajax({ ...

最佳答案

您可以通过从事件读取form.id属性来获取包含被单击的按钮的表单的id >目标:

function sendReminder(e) {
  e.preventDefault();

  let formId = e.target.form.id;
  console.log(formId);
}
<form id="sendReminderForm{{ user.id }}" method="post" action="">
  <input type="hidden" name="policyId" value="{{ policy.id }}">
  <input type="hidden" name="userId" value="{{ user.id }}">
  <button class="btn btn-warning btn-xs" onclick="sendReminder(event)" type="submit">
     <span class="fa fa-paper-plane"></span> Remind
   </button>
</form>

但是值得注意的是,使用 onclick 和其他 onX 事件属性不再是好的做法,应该避免。

实现目标的更好方法是使用不显眼的事件处理程序,如下所示:

document.querySelectorAll('form').forEach(form => {
  form.addEventListener('submit', e => {
    e.preventDefault();
    
    let formId = e.target.id;
    console.log(formId);    
  });
});
<form id="sendReminderForm{{ user.id }}" method="post" action="">
  <input type="hidden" name="policyId" value="{{ policy.id }}">
  <input type="hidden" name="userId" value="{{ user.id }}">
  <button class="btn btn-warning btn-xs" type="submit">
     <span class="fa fa-paper-plane"></span> Remind
   </button>
</form>

这里的逻辑与上面的 jQuery 相同,正如您在问题中标记的那样:

$('form').on('submit', e => {
  e.preventDefault();
  console.log(e.target.id);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="sendReminderForm{{ user.id }}" method="post" action="">
  <input type="hidden" name="policyId" value="{{ policy.id }}">
  <input type="hidden" name="userId" value="{{ user.id }}">
  <button class="btn btn-warning btn-xs" type="submit">
     <span class="fa fa-paper-plane"></span> Remind
   </button>
</form>

关于javascript - 使用 Javascript 获取提交按钮的父表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67861553/

相关文章:

javascript - 引用生成器网站不能在显示内容之间放置符号或空格

javascript - 根据单词和带有 `^` 符号的突出显示部分分割字符串

javascript - 如何将 <td> 限制为只有三行?

javascript - 从选择元素创建 JSON

javascript - JS/Jquery : string to words text-segmentation script using dictionary and longest match?

javascript - 非 webkit 浏览器,旋转 div 中相邻图像之间的间隙

javascript - 使用 jquery 将 fadeIn 更改为滑动

javascript - excanvas IE8,意外调用方法或属性访问

html - 将两个图像并排居中并带有标题

html - 我需要有关对齐文本框的帮助