Django 表单提交下拉选择而不是提交按钮

Django form submit on dropdown selection rather than submit button

我有一个包含大量工作数据的 table,我有一个下拉菜单和一个提交按钮,它充当过滤器,因此 table 仅显示基于过滤器:

<form>
    <select id="user_id_dropdown" name="user_id">
        <option disabled selected>Filter by Username</option>
        <option value="all">All Usernames</option>
        <option disabled>────────────</option>
        {% for user in users %}
            <option value={{ user.id }}>{{ user.username }}</option>
        {% endfor %}
    </select>
    <input id="filter" class="btn btn-primary" type="submit" value="Filter" />
</form>

<table>
...

我是如何使用按钮完成的,用户名的 user_id 作为查询字符串传递,我的视图会处理它。选择用户名(假设 user_id 为 4)并单击提交按钮后,url 为:

http://...jobs?user_id=4

然后我在下面有一个 table,其中显示的所有职位现在都只有 user_id 4.

创建的职位

问题是,现在我只想取消提交按钮,只在下拉选择时提交表单。

我尝试给表单命名并在选择发生变化时提交:

<form name='filter' method=POST>
    <select id="user_id_dropdown" name="user_id" onChange="filter.submit();">
    ...

但这似乎不起作用。看起来页面重新加载(类似于提交按钮),但 table 数据没有改变。我在这里错过了什么?

试着把这个放在你的 onchange 属性上:

document.filter.submit();

如果失败,请为您的表单提供 ID 属性并执行以下操作:

document.getElementById('youFormId').submit();

您也可以将其作为 GET 参数发送,例如:

onchange="window.locatio.href+='?v='+this.value;"

顺便说一句,这个问题与Django关系不大,下次再问这种问题时,请标记html/javascript。

我试过这个:

onChange="form.submit();"

它奏效了。似乎 name 没有必要。