在wtforms中,我希望我的SelectField填充其选择的值StringField。 我使用flask,bootstrap和python 3.7
我的HTML代码如下:
{% block body %}
<h3>Edit Bloomberg ticker details</h3>
{% from "includes/forms/_form_helpers.html" import render_field %}
<div class="form-group" id="company_id" onchange="myFunction(event)">
{{render_field(form.company_names, class_="form-control")}}
</div>
<div class="form-group" id="isin_id">
{{render_field(form.isin_id, class_="form-control")}}
</div>
<script>
function myFunction(e) {
document.getElementById("isin_id").value = e.target.value
}
</script>
{% endblock %}
后面的pyhon如下:
class DefTickerForm(_Form):
choices_companies = [(1,'Facebook'), (2, 'Google') ]
company_names = _SelectField(label='Company names:', choices=choices_companies, coerce=int)
isin_id = _StringField(label='isin_id', validators=[_validators.DataRequired], default=-1)
我希望当用户选择“ Facebook”时,isin SelectField等于1。但是到目前为止,它什么也不做。 请注意,如果代码为:
alert(e.target.value)
我得到了想要的值。所以问题是设置TextField值。
我的渲染域代码如下(来自youtube教程):
{% macro render_field(field) %}
{{ field.label }}
{{ field(**kwargs)|safe }}
{% if field.errors %}
{% for error in field.errors %}
<span class="help-inline"> {{ error }}</span>
{% endfor %}
{% endif %}
{% endmacro %}
由于Google在这些方面的帮助不是很大,因此任何帮助都将不胜感激。 最好
答案 0 :(得分:0)
显然,TextField仅接受字符串(如果您习惯使用JavaScript,我想很明显)
因此,如果有人遇到相同的问题,代码工作如下:
<div class="form-group" onchange="myFunction(event)">
{{render_field(form.company_names, class_="form-control")}}
</div>
<div class="form-group">
{{render_field(form.isin_id, class_="form-control")}}
</div>
<script>
function myFunction(e) {
var x = e.target.value;
alert(x);
document.getElementById("isin_id").value = x.toString();
}
</script>
请注意,无论是Jinja还是我的渲染器,都应使用字段名称作为默认ID(这是我使用Chrome inpector意识到的。这意味着我不必为每个Div添加一个ID。无论如何,这就是beginenr的想法)用Java语言编写。