Javascript 动态添加的输入字段不是';t以request.form提交
我在我的Javascript 动态添加的输入字段不是';t以request.form提交,javascript,html,jquery,flask,jinja2,Javascript,Html,Jquery,Flask,Jinja2,我在我的input.html页面中有一个表单,我有一组输入字段,由jinja2通过编程生成,也由Javascript动态生成。当我点击submit(即进入我的POST函数)时,jinja2生成的输入都会显示在我的request.form中,但是动态创建的字段(使用给定元素旁边的+按钮)没有显示。这很奇怪,因为如果我在添加一些新输入后检查页面,它们。。。应该吗 有什么想法吗 HTML (说明:这将在~dict中迭代,并且x有两个文本字段,分别称为question和tech key(ex/“int”
input.html
页面中有一个表单,我有一组输入字段,由jinja2通过编程生成,也由Javascript动态生成。当我点击submit(即进入我的POST函数)时,jinja2生成的输入都会显示在我的request.form
中,但是动态创建的字段(使用给定元素旁边的+
按钮)没有显示。这很奇怪,因为如果我在添加一些新输入后检查页面,它们。。。应该吗
有什么想法吗
HTML
(说明:这将在~dict中迭代,并且x
有两个文本字段,分别称为question
和tech key
(ex/“int”)。这将打印出带有“加号”的问题,以允许用户动态添加新的输入字段。默认情况下,我包括一个(ex/name=“{{x['tech u key']}1”
表示name=“int1”
。每个新的输入字段都会增加增量(int1、int2、int3等)
{inps['sheet']中k,v的百分比。items()%}
{v%中x的%s}
{{x['question']}
+
{%endfor%}
{%endfor%}
JavaScript
(说明:这允许我在单击产品旁边的+符号时,为每个名为div的个体(例如上面的
)添加新的输入字段。我已将它们连接到原始表单。当我单击提交时,它们不会推送。)
//在给定问题上单击+时添加新的输入字段
$(文档).ready(函数(){
var max_字段=10;
var add_button=$(“.add_form_field”);
var x=1;
$(添加按钮)。单击(功能(e){
use=$(this.attr(“数据键”)
var wrapper=“.”+使用
e、 预防默认值();
如果(x-”);//添加输入框
}
$(“+”字段名称)。单击(函数(){
$(this).closest('div').remove();x--;
})
});
});
添加两个新输入字段时直接从我的页面复制的HTML:
<div class="int">
<b>Did you conduct any interviews this quarter?</b>
<button class="add_form_field" data-key="int" data-ol-has-click-handler=""><b>+</b></button>
<div>
<br><input type="text" name="int1" size="80px">
</div>
<div>
<br><input type="text" form="input_form" name="int2" size="80px">
<a class="int2"><button><b>-</b></button></a>
</div>
<div>
<br><input type="text" form="input_form" name="int3" size="80px">
<a class="int3"><button><b>-</b></button></a>
</div>
</div>
本季度你进行过面试吗?
+
-
-
不是表单的一部分。您可能需要查看
@Gerard实际上
的默认类型是“提交”
确实会提交一份表格。
不会。请提供此代码的详细信息。以便提供正确的答案。谢谢。您会遇到的一个问题是重复名称。尝试添加两个…删除第一个…然后添加另一个,您有两个同名的int3
@charlietfl它实际上只给我int4,int5、int6和int2都消失了。
// adds new input fields when the + is clicked on a given question
$(document).ready(function() {
var max_fields = 10;
var add_button = $(".add_form_field");
var x = 1;
$(add_button).click(function(e){
use = $(this).attr("data-key")
var wrapper = "."+use
e.preventDefault();
if(x < max_fields){
x++;
var field_name = use + x
$(wrapper).append('<div><br><input type="text" form="input_form" name="'+field_name+'"/ size=80px><a class="'+field_name+'"><button><b>-</b></button></a></div>'); //add input box
}
$("."+field_name).click(function(){
$(this).closest('div').remove(); x--;
})
});
});
<div class="int">
<b>Did you conduct any interviews this quarter?</b>
<button class="add_form_field" data-key="int" data-ol-has-click-handler=""><b>+</b></button>
<div>
<br><input type="text" name="int1" size="80px">
</div>
<div>
<br><input type="text" form="input_form" name="int2" size="80px">
<a class="int2"><button><b>-</b></button></a>
</div>
<div>
<br><input type="text" form="input_form" name="int3" size="80px">
<a class="int3"><button><b>-</b></button></a>
</div>
</div>