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

股票买卖应用中表单提交始终发送首个表单symbol值的问题求助

股票买卖应用中表单提交始终发送首个表单symbol值的问题求助

看起来你遇到的问题是所有Buy按钮都触发了同一个模态框,所以提交的自然是第一个股票的symbol值啦!

问题根源

你现在给所有模态框都用了同一个id="buy",而Bootstrap的模态框是通过data-bs-target指向这个id来绑定的。当你用Jinja循环生成多个股票的按钮和模态框时,所有模态框的id重复了——浏览器只会识别第一个id对应的元素,不管你点哪个按钮,打开的都是第一个生成的模态框,提交的当然就是第一个表单里的symbol了。

解决方案

给每个模态框和对应的按钮设置唯一的id标识,比如利用股票的symbol来区分,这样每个按钮就会绑定到对应股票的模态框上。修改后的代码示例如下:

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#buy-{{ stock.symbol }}">Buy</button>

<!-- Modal -->
<div class="modal fade" id="buy-{{ stock.symbol }}" tabindex="-1" aria-labelledby="buyLabel-{{ stock.symbol }}" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="buyLabel-{{ stock.symbol }}">Buy {{ stock.symbol }}</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <form action="{{ url_for('index') }}" method="post">
          <input type="hidden" name="symbol" value="{{ stock.symbol }}">
          <div class="form-group">
            <label for="buy-shares-{{ stock.symbol }}">Buy Shares</label>
            <input type="number" name="shares" id="buy-shares-{{ stock.symbol }}" class="form-control" required>
          </div>
          <input type="hidden" name="transaction_type" value="buy">
          <button type="submit" class="btn btn-primary">Buy</button>
        </form>
      </div>
    </div>
  </div>
</div>

关键修改点说明

  • 按钮的data-bs-target改成了#buy-{{ stock.symbol }},对应每个模态框的唯一id
  • 模态框的id设置为buy-{{ stock.symbol }},确保每个模态框都是唯一的
  • aria-labelledby和模态标题的id也改成了buyLabel-{{ stock.symbol }},既符合无障碍访问规范,又避免了id重复
  • 输入框的id也改成了buy-shares-{{ stock.symbol }},防止多个输入框id重复带来的潜在问题

这样修改后,每个Buy按钮都会打开对应股票的模态框,提交的表单自然就是当前股票的symbol值了。

备注:内容来源于stack exchange,提问作者Linh Chi Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:58:05