Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Select2显示文本,但提交ID,与Flask、WTForms一起使用_Javascript_Jquery_Flask_Jquery Select2_Flask Wtforms - Fatal编程技术网

Javascript Select2显示文本,但提交ID,与Flask、WTForms一起使用

Javascript Select2显示文本,但提交ID,与Flask、WTForms一起使用,javascript,jquery,flask,jquery-select2,flask-wtforms,Javascript,Jquery,Flask,Jquery Select2,Flask Wtforms,我正在尝试在使用WTForms时实现Select2下拉菜单(通过ajax提供数据)功能。几乎一切正常,这意味着数据被正确提取并以Select2所期望的“ID和文本”格式进行处理 但是,我在提交时收到一个“无效选择”错误-当运行validate\u on\u submit时。这似乎是由于Select2提交的是ID号而不是文本。这很奇怪,因为它在搜索和实际进行选择时会在页面上显示文本。validate\u on\u submit预期为0或1,而不是随机整数,这就是它抛出错误的原因。我如何解决这个问题

我正在尝试在使用WTForms时实现Select2下拉菜单(通过ajax提供数据)功能。几乎一切正常,这意味着数据被正确提取并以Select2所期望的“ID和文本”格式进行处理

但是,我在提交时收到一个“无效选择”错误-当运行
validate\u on\u submit
时。这似乎是由于Select2提交的是ID号而不是文本。这很奇怪,因为它在搜索和实际进行选择时会在页面上显示文本。
validate\u on\u submit
预期为0或1,而不是随机整数,这就是它抛出错误的原因。我如何解决这个问题?如何获得提交的实际文本

而且,当添加或删除一行时(我猜是在运行
render\u template
??),前面的Select2字段中的任何文本/选择都会消失。flask/python中指定的选项将保持原样

我能找到的最相似的问题是和,但要么没有答案,要么我无法完全理解和应用它

下面是一些代码:

Javascript

HTML

进一步研究这一点,这里似乎描述了相同的问题,但我仍然无法理解。感谢您的帮助

我还可以提供gif和/或屏幕截图

更新

我找到了如何“获取”文本值并通过console.log显示它,但如何将其作为WTForms SelectField的选择?为什么要在提交时注册ID

var hereitgoes = $(element).parents('.row').find('.item-model')    
$(hereitgoes).on("select2:select", function (e) { 
var selectedtext = $(e.currentTarget).text();
console.log(selectedtext)
});
<div class="col-3">
{{ line.item_model.label}}
{% if line.item_model.data == 'Software' %}
{{ line.item_model(class='form-control item-model', disabled=true) }}
{% else %}
{{ line.item_model(class='form-control item-model') }}
{% endif %}
{% for error in line.item_model.errors %}
<p class="form-control-status text-danger">
    {{ error }}
</p>
{% endfor %}
</div>
class DeviceForm(FlaskForm):
    item_model = SelectField('MODEL', choices=[('0', 'Select Item')], validators=[DataRequired()])
var hereitgoes = $(element).parents('.row').find('.item-model')    
$(hereitgoes).on("select2:select", function (e) { 
var selectedtext = $(e.currentTarget).text();
console.log(selectedtext)
});