【问题标题】:Stop browser/page refresh on Html5 Form Submission在 Html5 表单提交上停止浏览器/页面刷新
【发布时间】:2013-07-16 17:25:54
【问题描述】:

我的问题是:我有一个视频可以播放并在接近尾声时呈现一个表格。提交表单后,我触发该视频以隐藏()和显示()另一个包含 2 个视频的 div。该部分工作正常,但在表单发布后刷新页面,我们又回到了原点。

我尝试了其他帖子中的方法,但无济于事。 这是表格:

    <form id="contactForm" action="salesforce.com address obscured" method="POST">
         <input type=hidden name="oid" value="00D40000000Mvel">
         <input  id="first_name" maxlength="40" name="first_name" size="20" type="text" placeholder="FIRST NAME" /><br>
         <input  id="last_name" maxlength="80" name="last_name" size="20" type="text" placeholder="LAST NAME" /><br>
         <input  id="email" maxlength="80" name="email" size="20" type="text" placeholder="EMAIL" /><br>
         <input  id="zip" maxlength="20" name="zip" size="20" type="text" placeholder="ZIP CODE" /><br>
         <button type='submit' class="submit-button" >GET STARTED!</button>
    </form>

我的 jQuery 减去我用来尝试防止提交时刷新的代码:

    var mainVid = $("#video")
    var secVid = $( "#secVid" );
    $( "#videoForm button" ).on( "click", function( event ) {
    mainVid.hide(400);
    secVid.show(400);
    });

【问题讨论】:

    标签: forms page-refresh preventdefault onsubmit


    【解决方案1】:

    试试

    $('#contactForm').on('submit', function (event) {
        event.preventDefault();
        $.post("your url", $(this).serialize());
    
        mainVid.hide(400);
        secVid.show(400);
    });
    

    然后表单是通过 ajax 请求提交的,页面不会重新加载。

    http://api.jquery.com/event.preventDefault/http://api.jquery.com/jQuery.post/

    【讨论】:

    • @Jared.DAGI:您在控制台中是否收到任何 js 错误?事件处理程序是否执行?
    • Uncaught TypeError: Object# has no method 'serialize'
    • 据我所知,错误可能是由于未将名称属性应用于每个输入元素;但是它们应用了名称属性。
    • @Jared.DAGI:我的错误,this 必须包装在一个 jQuery 对象中。我已经更新了答案。解决了吗?
    猜你喜欢
    • 2015-08-30
    • 2014-04-20
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多