【发布时间】:2020-08-01 20:00:36
【问题描述】:
我有一个表单,下拉菜单的选项从字典列表中提供给它。每个 dict 都有一个 ["symbol"] 和一个 ["shares"] 项。下拉选项通过 for 循环进行循环。
我正在尝试这样做,因此当我从下拉菜单中选择一个选项时,以下表单字段的最大输入会更新为相应的 ["shares"] 值。
到目前为止,我所拥有的如下。我知道我的函数不正确,但我的问题是我真的不知道如何使用 document.getElementById 从我的字典列表中访问特定项目并获取“shares”值。
<script type="text/javascript">
function updateMax() {
var select = document.getElementById('symbol').innerText; // symbol selected
const article = document.querySelector('select.val'); // finding article with symbol
var maxi = article.dataset.shares; // getting maximum value
var field = document.getElementById('shares');
field.max = maxi
}
</script>
<form action="/sell" method="post">
<div class="form-group">
<select name="symbol" id="symbol" onchange="updateMax()">
<option disabled selected value="">Symbol</option>
{% for row in portfolio %}
<article>
id="{{ row["symbol"] }}"
shares="{{ row["shares"] }}"
</article>
<option value="row.symbol">{{ row["symbol"] }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<input id="shares" autocomplete="off" min="0" max="" name="shares" placeholder="Shares" type="number">
</div>
<button class="btn btn-primary" type="submit">Sell</button>
</form>
我尝试按照以下评论的说明进行操作。我不确定我是否可以像这样在循环内创建,或者如果我不能,我不确定其他选项会是什么。
感谢任何反馈。
【问题讨论】:
标签: javascript forms cs50