栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

动态将字段添加到表单

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态将字段添加到表单

你的表单必须基于从POST传递给它的一些变量来构造(或盲目检查属性)。每次重新加载视图时(无论是否加载)都会构造表单本身,因此HTML需要包含有关构造正确数量的字段以进行验证的字段数量的信息。

我将以FormSet工作方式看待这个问题:存在一个隐藏字段,其中包含活动表单的数量,每个表单名称前都带有表单索引。

实际上,你可以将一个字段

FormSet

https://docs.djangoproject.com/en/dev/topics/forms/formsets/#formsets

如果你不想使用a FormSet,则可以随时自行创建此行为。

这是从头开始制作的-它应该给你一些想法。它还回答了有关将参数传递给的问题

__init__
-你只需将参数传递给对象构造函数即可:
MyForm('arg1', 'arg2', kwarg1='keyword arg')

Forms

class MyForm(forms.Form):    original_field = forms.CharField()    extra_field_count = forms.CharField(widget=forms.HiddenInput())    def __init__(self, *args, **kwargs):        extra_fields = kwargs.pop('extra', 0)        super(MyForm, self).__init__(*args, **kwargs)        self.fields['extra_field_count'].initial = extra_fields        for index in range(int(extra_fields)): # generate extra fields in the number specified via extra_fields self.fields['extra_field_{index}'.format(index=index)] =      forms.CharField()

View

def myview(request):    if request.method == 'POST':        form = MyForm(request.POST, extra=request.POST.get('extra_field_count'))        if form.is_valid(): print "valid!"    else:        form = MyForm()    return render(request, "template", { 'form': form })

HTML

<form>    <div id="forms">        {{ form.as_p }}    </div>    <button id="add-another">add another</button>    <input type="submit" /></form>

JS

<script>let form_count = Number($("[name=extra_field_count]").val());// get extra form count so we know what index to use for the next item.$("#add-another").click(function() {    form_count ++;    let element = $('<input type="text"/>');    element.attr('name', 'extra_field_' + form_count);    $("#forms").append(element);    // build element and append it to our forms container    $("[name=extra_field_count]").val(form_count);    // increment form count so our view knows to populate     // that many fields for validation})</script>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号