繁体   English   中英

页面加载jQuery表单提交不起作用

[英]Page Load jQuery Form Submit does not work

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                submitForm($("#login-user-one"));
            });

            function submitForm(form) {
                console.log($(form).attr("method"));
                $(form).submit();
            };
        </script>
    </head>
    <body>
        <form id="login-user-one" name="login" method="POST" action="/test.html">
            <input name="userid" tabindex="1" value="MyUser">
            <input name="pass" type="password" tabindex="2" value="MyPass">
            <input type="submit" name="submit" value="1" tabindex="3">
        </form>
    </body>
</html>

我不知道为什么上述不起作用。 日志向我显示了POST的值,但不会提交。 控制台中没有错误。

JS小提琴: https : //jsfiddle.net/t48hk9qx/

删除名称=在您的输入中提交将解决问题。 https://codesandbox.io/s/64kl2l3wvk 我认为是因为form.submit函数被名称= Submit的输入替换。

好吧,这对我来说是新的。

因为您的表单具有一个名为name="submit"的命名元素,所以该元素引用将替换HTMLFormElement.prototype.submit()函数。

文档中 ...

命名输入将作为属性添加到其所有者表单实例,并且如果它们共享相同的名称,则它们可以覆盖本机属性(例如,具有名为action的输入的表单将具有其action属性,而不是表单的action HTML属性返回该输入)。

当以编程方式提交表单时,jQuery尝试执行该功能

if (typeof element.submit === 'function') {
  element.submit()
}

但在您的情况下, element.submit是一个HTMLInputElement

快速简便的解决方案,重命名您的Submit元素,或者在单按钮表单中更为常见,只需删除name属性。


如果您必须保留名为“ submit”的提交按钮,这似乎可行

function submitForm(form) {
  // note, "form" is already a jQuery object
  console.log(form.attr("method"));

  HTMLFormElement.prototype.submit.call(form[0])
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM