引导标签输入标签值未与表单一起提交

Posted

技术标签:

【中文标题】引导标签输入标签值未与表单一起提交【英文标题】:bootstrap tags input tag value is not submitting with form 【发布时间】:2021-04-16 15:36:05 【问题描述】:

有人可以解释这里发生了什么吗?我不明白为什么我在标签输入字段中提交的值没有与表单一起提交。我用both examples 试过这个 并且两者都不会正确发送值。

我正在使用bootstrap4-tagsinput

html 代码:

     <form class="needs-validation" action="/archive" enctype="multipart/form-data" method="POST">
         <div class="form-group">
            <label>Solution Name</label>
            <input name="solution_name" type="text" class="form-control" required>
            <label>Vendor Name</label>
            <input name="vendor_name" type="text" class="form-control" required>
         </div>
         <div class="form-group">
            <label>Attachment</label>
            <input name="file" type="file" class="form-control-file" required>
         </div>
         <div class="form-group">
            <label>Tags</label>
             <input class="form-select" name="tags" data-role="tagsinput">
          </input>
         </div>

         <button type="submit" value="upload" class="btn btn-primary">Submit</button>
      </form>

服务器

@review_archive_host.route('/archive', methods=["GET", "POST"])
@login_required
def archives():
    if "review_archive" not in session['u']['flags']:
        flash("You do not have permissions to access that feature/page")
        return redirect(get_redirect_url())
    #archive search page
    if request.method == "POST":
        #create a new archive record
        d = request.form.to_dict(flat=True) or 
        return d

示例表单和响应:

回复:


  "solution_name": "asdfs", 
  "tags": "", 
  "vendor_name": "asfsd"

【问题讨论】:

我根据这个插件更新了我的答案。 【参考方案1】:

在您提供的链接的文档中,该 puglin 是为 Bootstrap 2.3.23 设计的。通过您问题的标签,我看到您使用的是4

还有其他人 having issues 在 Bootstrap 4 上使用它。

我上传了一个基于Github 的表单和方法的小示例,但使用的是Bootstrap 的3 版本,它按预期工作。

另一种可能是this。他们根据您最初使用的插件修复了与 bootstrap 4 的兼容性问题

EDIT:

使用Nodws/bootstrap4-tagsinput 更新您的答案后,我使用这个插件做了一个小测试,我能够重现问题。

在分析发送的request.form 时,我注意到在此版本的插件中,密钥tags 重复出现。

ImmutableMultiDict([('vendor_name', u'vendor'), ('solution_name', u'solution'), ('tags', u''), ('tags', u'tag1,tag2')])

因此,当您的路由将表单解析为 dict 时,您不会获得任何价值。

我使用 this 另一个版本的插件复制了您的代码,现在可以按预期工作。

完整的例子继续我的Github。

【讨论】:

重复的名称实际上是我注意到的,我不知道为什么它默认为空白值。【参考方案2】:

文档中的插件适用于 bootstrap 2.3.2 或 3,不适用于 bootstrap 4。

为了使用该插件,您可以将引导程序降级到版本 3。

另一种方法是使用 jQuery 的 Bootstrap 4 标签输入插件 - https://www.jqueryscript.net/form/Bootstrap-4-Tag-Input-Plugin-jQuery.html

【讨论】:

这是我正在使用的插件。

以上是关于引导标签输入标签值未与表单一起提交的主要内容,如果未能解决你的问题,请参考以下文章

引导输入标签应用所需的验证

关注表单时如何更改表单中输入标签的颜色? [复制]

将 twitter 引导程序与 Django 表单一起使用

动态创建的索引字段未与表单一起提交

前端基础表单标签/提交

为啥表单提交没有捕获我在输入标签中设置的只读默认值?