Загрузка страницы jQuery Form Submit не работает - PullRequest
1 голос
/ 14 марта 2019
<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 Fiddle: https://jsfiddle.net/t48hk9qx/

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Ну, для меня это новый.

Поскольку ваша форма имеет именованный элемент с name="submit", ссылка на этот элемент заменяет функцию HTMLFormElement.prototype.submit().

Из документации ...

Именованные входы добавляются в экземпляр формы их владельца в качестве свойств и могут перезаписывать собственные свойства, если они имеют одинаковое имя (например,форма с входным именем action будет иметь свое свойство action, возвращающее этот вход вместо action атрибута формы в формате.)

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])
}
1 голос
/ 14 марта 2019

Удалить имя = отправить в вашем входе решит проблему.https://codesandbox.io/s/64kl2l3wvk. Я думаю, потому что функция form.submit заменяется входом с именем = submit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...