【问题标题】:HTML5 form is not getting submittedHTML5 表单未提交
【发布时间】:2014-11-26 05:55:56
【问题描述】:

我有以下代码来提交表单。如果我使用事件侦听器函数名称作为提交,则不会提交表单。如果我使用任何其他名称,它会。我不应该在 JavaScript 中使用任何 HTML5 关键字,如 submit 作为函数名吗?在这种情况下,submit 是一个 HTML5 关键字,可以用作任何 INPUT 元素的类型。

<form onsubmit="submit()">
    <input type="email" name="email" />
    <input type="submit"/>
</form>

function submit() {
    var f = $('form').serialize();
    alert(f);
}

【问题讨论】:

  • 为什么在提交函数调用中使用 ** 作为前缀和后缀?我以前从未见过。 Mayby先尝试删除它们:)
  • 对不起。我从事件侦听器中删除了 **。这是 StackOverflow 在我尝试将函数名称加粗时添加的。

标签: html forms submit


【解决方案1】:

您已经在这里使用了 jQuery,因此对整个问题的更优雅的解决方案是:

// HTML
<form name="my-form">
    <input type="email" name="email" />
    <input type="submit"/>
</form>

然后有一个单独的JS文件:

//Js
$(document).ready(function(){
    $('form[name="my-form"]').submit(function(e){
        var f=$(this).serialize();
        alert(f);
    });
});

这也为您提供了额外的选项来防止表单提交干净;在submit(){ } 函数的末尾添加这个。

e.preventDefault();

更新

正如OP所指出的,最初的问题是函数名submit()是否可以用作表单中的onsubmit属性。

This answer 建议它不能执行以下操作:

document.form['my-form'].submit();

将是触发表单提交的有效方式;因此该方法名称不能包含在 HTML 中。 我现在正在寻找更好的来源来确认这一点我在 Mozilla Developer Network 上找到了一个类似的来源,它确认了上面的代码,但没有明确定义不能使用关键字 submit .

【讨论】:

  • 我可以用你提交的代码实现我想要的任何东西。但是,我的问题是关于在 JavaScript 中使用 HTML5 关键字。
  • 嗯明白了。它与 HTML5 规范无关; onsubmit 已经成为表单属性有一段时间了,这让我觉得你问的是更广泛的问题。
【解决方案2】:

您知道,还有另一种方法可以做到这一点。您可以将您的 html 与 javascript enritelly 分开。

<form id="form">
    <input type="email" name="email" />
    <input type="submit"/>
</form>
//Rest of your code
<script>
$(function() {
    $('#form').submit(function() {
        var f = $('#form').serialize();
        // do your stuff
        return true; // return false to cancel form action
    });
});
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2014-01-18
    • 1970-01-01
    • 2018-06-17
    • 2012-08-09
    • 2013-12-20
    相关资源
    最近更新 更多