You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML jQuery:按钮data-id值无法传递到模态框表单的问题求助

问题分析与修复方案

你的代码里有几个关键错误导致data-id的值无法传递到模态框输入框,和技术更新无关,都是基础语法与选择器问题:

  • 事件选择器错误:脚本中绑定的"open-exampleModal"不是按钮的任何标识(按钮id是btnShowModal),导致事件根本不会触发。
  • Bootstrap属性语法错误:按钮上的data toggle应该写成data-toggle(属性名不能有空格),这是Bootstrap触发模态框的标准属性。
  • 输入框选择器匹配失败:脚本用$(".modal-body #bookId")定位输入框,但模态框里的输入框只有name="bookId",缺少id="bookId"属性,导致选择器找不到目标元素。
  • 事件时机不合适:直接绑定按钮的click事件可能和Bootstrap模态框的内置触发逻辑冲突,推荐使用模态框专属的show.bs.modal事件,它会在模态框显示前触发,更稳定。

修正后的完整代码

触发按钮

<div class="grid-cell">
  <span>
    <button type="button" id="btnShowModal" class="btn btn-link btn-square-md" data-toggle="modal" data-target="#exampleModal" data-id="B1"></button>
  </span>
</div>

模态框(仅修改输入框部分)

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>

      <div class="modal-body" id="modalbody">
        <p>some content</p>
        <!-- 新增id="bookId"属性 -->
        <input type="text" name="bookId" id="bookId" value=""/>
      </div>

      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

脚本

<script type="text/javascript">  
  // 监听模态框即将显示的事件
  $('#exampleModal').on('show.bs.modal', function (event) {
    // 获取触发模态框的按钮元素
    const triggerBtn = $(event.relatedTarget);
    // 提取按钮的data-id值
    const bookId = triggerBtn.data('id');
    // 给模态框内的输入框赋值
    $(this).find('#bookId').val(bookId);
  });
</script>

说明

使用show.bs.modal事件的优势在于:无论通过按钮还是其他方式触发模态框,都能通过event.relatedTarget准确获取触发源,同时事件触发时机确保模态框的DOM元素已经加载完成,避免选择器失效的问题。

内容的提问来源于stack exchange,提问作者brylowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:17:01