【问题标题】:Submit form in javascript using form name使用表单名称在 javascript 中提交表单
【发布时间】:2026-02-01 02:10:01
【问题描述】:

我正在使用 django 模板在网页中动态生成带有隐藏输入的表单,当点击一些相关的文本标签时应该提交这些表单。问题是我无法让它工作。

{% for tag in tags %}
<form name="remove_{{ tag }}" id="{{ tag }}" action="/filter" method="post" accept-charset="utf-8">
    <input type="hidden" name="remove_tag" value ="{{ tag }}" />
</form>

<a href="javascript: remove_tag({{ tag }})">{{ tag }}</a>
{% endfor %}

<script type="text/javascript">
    function remove_tag(tag) {  
        document.getElementById(tag).submit();
        return false;
    }
</script>

此代码生成以下 javascript 错误:Uncaught TypeError: Cannot call method 'submit' of null

我也尝试过使用

提交表单
document.forms[tag].submit();

(将表单名称更改为标记),但收到几乎相同的错误,但使用 'undefined' 而不是 null。

在第二个示例中,javascript 函数似乎试图将 'tag' 解释为整数。如果我确实使用整数,它可以正常工作。我可以首先使用用于生成表单的 forloop.counter,但这有点难看,并且使代码更难维护。

还有其他在表单上调用 submit() 的有效方式吗?

【问题讨论】:

    标签: javascript html django forms


    【解决方案1】:

    引用:

    <a href="javascript: remove_tag('{{ tag }}')">{{ tag }}</a>
    

    必须正确引用“标签”值,以便 Javascript sn-p 在语法上正确。

    【讨论】: