【问题标题】:Resume Form Submit after PreventDefault预防默认后提交简历表
【发布时间】:2016-11-30 16:56:58
【问题描述】:

我环顾四周,发现了许多类似的答案,但我在代码中提交的表单失败了。当点击任一“提交”按钮并使用 SweetAlert 确认时,似乎有什么缺失或不正确导致表单无法提交?

http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview

   <form id='submissionForm' autocomplete='off' method='POST'>
        <button>Save</button>
        <input type='submit' name='submit' id='submitTest1' value='Submit 1'>
        <input type='submit' name='submit' id='submitTest2' value='Submit 2'>
    </form>

单击“是的,我确定”然后“确定”不会提交表单。

更新: 我已经简化了代码:http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview

【问题讨论】:

    标签: javascript jquery forms submit sweetalert


    【解决方案1】:

    表单元素有一个名为submit的方法,同时也有表单中的表单元素作为成员。

    如果您有一个名为submitbutton,您可以使用document.form1.submit 访问它。但是,由于它与提交方法同名,因此不再有任何方法可以访问该方法。如果您使用该方法提交表单,则将不再有效。

    使用这个plunker

    HTML:

    <form id='submissionForm' autocomplete='off' method='POST'>
            <button>Save</button>
    
            <input type='submit' name='submit1' id='submitTest1' value='Submit 1'>
            <input type='submit' name='submit2' id='submitTest2' value='Submit 2'>
        </form>
    

    【讨论】:

    • vispan 已经很好地发现了这个问题。
    • 太棒了!谢谢!
    【解决方案2】:

    在第二次提交之前使用removeEventListener删除事件处理程序。

    这是你更新的小提琴:http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview

    正如答案中所述,您拥有名为“submit”的表单元素这一事实覆盖了.submit() 方法。您应该避免在提交按钮中使用“提交”作为名称。更改它应该可以工作。

    【讨论】:

    • 这样,当我点击成功消息的“确定”时,我仍然会在控制台中看到Uncaught TypeError: form.submit is not a function
    • 有趣!我已经试用了您的代码,但在 SweetAlert 确认后表单仍然没有提交。
    • @theflarenet - 如另一个答案所述,提交名称是问题所在。我已经更新了答案。
    【解决方案3】:

    您的表单对象是一个普通的 javascript 对象,无法访问 jQuery 的提交方法。

    将表单对象包装在 jQuery 包装器中 $(form).submit()

    不确定是否需要原生 javascript,因为我看到 plnkr 中包含 jQuery,但我使用 jQuery 的 submit() 方法而不是 javascript 方法进行了测试,并且它有效。

    创建表单变量时,将this 设为jQuery 对象var form = $(this);

    【讨论】:

    • submit() 也是标准的JS方法。
    • 是的,但是使用 jQuery 的 submit 方法提交表单。也许我应该改写这个答案
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2013-07-16
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多