选择性django/jquery表单提交

选择性django/jquery表单提交,jquery,html,django,forms,Jquery,Html,Django,Forms,我在django模板顶部有一个搜索字段(没有周围的表单标记): 现在,我加入。因此,我有一个类似于以下内容的登录模板: <form method="post" action=".">{% csrf_token %} {% if form.non_field_errors %} <div class="form_errors"> {% for err in form.non_field_errors %}

我在django模板顶部有一个搜索字段(没有周围的表单标记):

现在,我加入。因此,我有一个类似于以下内容的登录模板:

<form method="post" action=".">{% csrf_token %}
    {% if form.non_field_errors %}
        <div class="form_errors">
            {% for err in form.non_field_errors %}
                <div class="form_error_message">{{ err }}</div>
            {% endfor %}
        </div>  
    {% endif %}
    {% for hidden in form.hidden_fields %}
        {{ hidden }}
    {% endfor %}
    {% for field in form.visible_fields %}
        <div class="block">
            {{ field.label_tag }}
            {{ field }}
            {% for err in field.errors %}
                <span class="error_message">{{ err }}</span>
            {% endfor %}
        </div>
    {% endfor %}

    <div style="padding-left:11em; padding-bottom:1em;">
        <input type="submit" value="{% trans 'Log in' %}" />
        <input type="hidden" name="next" value="{{ next }}" />
    </div>
</form>
{%csrf\u令牌%}
{%if form.non_字段_错误%}
{%form.non_字段_errors%}
{{err}}
{%endfor%}
{%endif%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%form.visible_fields%}
{{field.label_tag}
{{field}}
{%for err in field.errors%}
{{err}}
{%endfor%}
{%endfor%}
我花了一段时间才弄明白为什么尝试登录会让我进入搜索页面。我意识到,输入密码后单击Enter键激活的是搜索键,而不是用户名/密码提交

如何配置模板,以便键入搜索查询、按enter键并激活搜索视图,或输入我的帐户信息、按enter键并登录?基本上,我如何指定回车键“属于”其必需功能?

您不需要:

<form method="post" action="{% url search %}">
    <input name="q" id="id_q" /> 
    <input type="submit" id="id_s" value="Search">
</form>
<script type="text/javascript">
$(function($) {
    $(":submit").click(function() {
        window.location = "{% url search %}?q=" + $("#id_q").val();
    });
});
</script>
或将id添加到搜索表单:

$("#search_form").submit(// ...

这是有帮助的,但仍然没有达到我所需要的。是,按下enter键时搜索框将提交,但填写登录表单信息后按下enter键将触发搜索功能。如果用户改为使用搜索框,是否有办法在输入密码后触发登录,同时仍然允许enter键工作?也许我误解了我需要做什么。我在做两件事。首先,我要删除javascript代码。其次,我通过在搜索框周围添加“get”方法来更改搜索框代码。这将复制上面的代码。这很有帮助,因为当按下enter键时,使用搜索框(您在上面写的)进行提交。但是,当按下enter键时,尝试登录(使用我在问题结束时填写的表单)不会提交。我试图更改该表单的post以获取,但它根本不起作用。当您单击“提交”按钮时,它会提交吗?您确定action=“”是适当的吗?当我单击按钮时,它确实会提交。所以我认为这个动作是合适的?但是当我按下回车键时,它就像我按下了搜索按钮。你能提取HTML以便我们重现错误吗?如果您在登录表单中,按enter键,它会提交另一个表单,这是因为HTML中存在另一个错误。
<form method="post" action="{% url search %}">
    <input name="q" id="id_q" /> 
    <input type="submit" id="id_s" value="Search">
</form>
<script type="text/javascript">
$(function($) {
    $(":submit").click(function() {
        window.location = "{% url search %}?q=" + $("#id_q").val();
    });
});
</script>
<form method="get" action="{% url search %}">
    <input name="q" id="id_q" value="{{ request.GET.q }}" /> 
    <input type="submit" id="id_s" value="Search">
</form>
$("form[action={% url search %}]").submit(// ...
$("#search_form").submit(// ...