【问题标题】:Loading form submit inside content tag using javascript?使用javascript在内容标签内加载表单提交?
【发布时间】:2015-08-11 04:54:41
【问题描述】:

我希望在一个模板 (register.html) 中将下面列出的表单的结果加载到单独的 html 文件 (index.html) 中的内容标记中。目标是让表单提交加载到 index.html 的中心。但是现在,它正在加载一个单独的页面,从而将用户从 index.html 中重定向。任何精通javascript的人都可以提供解决方案吗?非常感谢!

要在 index.html 中加载内容的位置:

<content class="loadContent">
</content>

register.html 表单:

<div class="registration_form">
    {% block content %}
     <form name="registerform" id="registerform" action="/register_temp/" method="post">{% csrf_token %}

        <ul style="position:relative; top:20px;">
        <li id="username_registration"><p>Username:</p>{{ form.username }}</li> 
        <li id="email_registration" class=""><p>Email:</p>{{ form.email}}</li>
        <li id="password1_registration" class=""><p>Password:</p>{{ form.password1 }}</li>
        <li id="password2_registration" class=""><p>Password confirmation:</p
        {{ form.password2 }}</li>
        </ul>

        <input name="registerform" id="registerform" class="registration_button" type="submit" value="Register" style="position:relative; left:55px;" onclick="userform();" />

        </form>
     {% endblock %}
 </div>

register.html 中的 javascript:

<script>

    function userform() {
    document.getElementById('registerform').submit();
    }


</script>

我已经能够使用此代码在索引中心加载其他链接(但还没有找到表单提交结果的解决方案):(注意:“飞溅”是脚本中引用的是包含 register.html 正文中所有内容的 div id。

<script>

$(function(){

    $('').on('click', function( e ){   
    });

    var wrap = $('content');

    $('#splash a').on('click', function( e ) {
        var href = $(this).attr('href');
        wrap.load( href + '' )
        .hide().delay(100).fadeIn(500);
        e.preventDefault();
    });


});
</script>

【问题讨论】:

    标签: javascript html django forms


    【解决方案1】:

    据我所知:

    • 有一个错字(您有一个未完全关闭的 p 标签,在 password2 字段之后)。它可能会给表单的其余部分带来问题。
    • 您有 2 个标签具有相同的 id,“registerform”。所以你的 document.getElementById('registerform') 可能无法正常工作。

    除此之外,我不明白这应该如何工作。您正在将表单提交到另一个页面 (/register_temp/),因此当前页面更改似乎是合乎逻辑的。

    也许我没有得到您想要做的事情,但据我了解,您不想以 html 方式提交表单,而是想使用 Ajax 来完成。

    布莱斯

    【讨论】:

    • 我不确定为什么 p 标签会这样出现。在我的代码中是正确的。我想当我粘贴它并格式化东西时它只是搞砸了。我只是更改了每个标签,因此它是唯一的,并且引用了表单 ID,而不是输入 ID。它仍然相应地工作。我希望 /register_temp/ 在我的 index.html 模板中加载。我不想改变页面。通过使用页面底部发布的 javascript,我可以对所有其他 href 标签执行此操作。我不能用我正在尝试做的表单提交结果来做到这一点。
    • 似乎 ajax 可能是执行此操作的方法。但是,我不熟悉这种方式。有什么建议吗?
    • 你应该看看api.jquery.com/jquery.post。使用示例“使用 ajax 请求发送表单数据”发送表单数据和“使用 ajax 发布表单并将结果放入 div”将 ajax 查询的结果放入 div,您应该能够做到你想要什么。
    • 我一定会读到的。我不确定这是否会奏效。该表单是从 django 视图派生的,并且在验证注册后,成功后会将用户定向到单独的 html 文件/url。该 html 文件/url 没有被加载到 index.html 中,就像 registration.html 文件一样。它被加载在它之外。问题是正在验证注册表单数据,但之后,用户被定向到未在索引中间加载的 /register_success/ url。如果这是有道理的,ajax 是否仍然合适?
    • 我什么都没得到,但是:如果你想提交你的表单并有一个重定向,无论响应是什么,只需使用普通的 html 提交按钮。如果在某些情况下您想留在同一页面上并更新其内容,请使用 ajax。如果需要,您将能够使用 js 更改页面。此外,如果您的表单使用 csrf 保护,您可能必须使用类似这样的东西:gist.github.com/alanhamlett/6316427
    猜你喜欢
    • 2012-03-09
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2017-05-09
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多