选择性django / jquery表单提交

时间:2012-03-28 15:42:54

标签: jquery html django forms

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

<input name="q" id="id_q" /> 
<input type="submit" id="id_s" value="Search">

截至目前,搜索键是通过按下按钮或单击输入提交的:

$(function($) {
    $(":submit").click(function() {
        window.location = "{% url search %}?q=" + $("#id_q").val();
    });
});

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

<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>

我花了一段时间才弄清楚为什么尝试登录会将我发送到搜索页面。我意识到输入密码后点击Enter键是激活搜索键,而不是用户名/密码提交。

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

1 个答案:

答案 0 :(得分:0)

你不需要这个:

<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>

请注意,javascript已消失,而且表单现在依赖于使用“get”方法。所以,javascript将不再发生冲突。

我还在q输入中添加了一个值,作为免费礼物B)

Jeff Sickel:

  

删除的代码是调试代码。

如果你真的想修复js,你可以这样做:

$("form[action={% url search %}]").submit(// ...

或者在搜索表单中添加ID:

$("#search_form").submit(// ...
相关问题