Ошибка «Отправить не является функцией» в JavaScript - PullRequest
233 голосов
/ 07 мая 2009

Может кто-нибудь сказать мне, что не так с этим кодом? Я пытался отправить форму с помощью JavaScript, но показалась ошибка «.submit is not function». Подробнее о коде см. Ниже:

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input onclick="submitAction()" id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

Я тоже пробовал это:

<script type="text/javascript">
    function submitAction()
    {
        document.forms["frmProduct"].submit();
    }
</script>

Оба показывают мне ту же ошибку: (

Ответы [ 14 ]

642 голосов
/ 07 мая 2009

Отправить не является функцией

означает, что вы назвали свою кнопку отправки или какой-либо другой элемент submit. Переименуйте кнопку на btnSubmit, и ваш звонок будет волшебным образом работать.

Когда вы называете кнопку отправки, вы переопределяете функцию submit() в форме.

11 голосов
/ 07 мая 2009
<form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data">

<input id="submit_value" type="button" name="submit_value" value="">

</form>

<script type="text/javascript">

document.getElementById("submit_value").onclick = submitAction;

function submitAction()
{
    document.getElementById("frmProduct").submit();
    return false;
}
</script>

РЕДАКТИРОВАТЬ: я случайно поменял идентификатор вокруг

7 голосов
/ 31 мая 2014

Убедитесь, что нет другой формы с таким же именем, и убедитесь, что в форме нет name = "submit" или id = "submit".

6 голосов
/ 25 января 2017

Если у вас нет возможности изменить name="submit", вы также можете отправить форму следующим образом:

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
5 голосов
/ 18 июня 2012

У меня была такая же проблема, когда я создавал приложение MVC, используя мастер-страницы. Попытка поиска элемента с 'submit' в качестве имен, как упомянуто выше, но это не так.

В моем случае было создано несколько тегов на моей странице, поэтому возникли некоторые проблемы со ссылкой на правильную форму.

Чтобы обойти это, я позволю кнопке обрабатывать, какой объект формы использовать:

onclick="return SubmitForm(this.form)"

и с JS:

function SubmitForm(frm) {
    frm.submit();
}
2 голосов
/ 24 января 2019

На самом деле решение очень простое ...

Оригинал:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct"
enctype="multipart/form-data">
    <input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">
</form>
<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>

Решение:

    <form action="product.php" method="get" name="frmProduct" id="frmProduct" 
enctype="multipart/form-data">
</form>

<!-- Place the button here -->
<input onclick="submitAction()" id="submit_value" type="button" 
    name="submit_value" value="">

<script type="text/javascript">
    function submitAction()
    {
        document.frmProduct.submit();
    }
</script>
2 голосов
/ 25 мая 2017

В этой теме уже есть много ответов, но тот, который работал лучше всего (и самый простой - одна строка!) Для меня, был модификацией комментария, сделанного Нилом Е. Пирсоном от 21 апреля 2013 года:

Если вы застряли с кнопкой отправки #submit, вы можете обойти ее, украдя метод submit () другого экземпляра формы.

Моя модификация его метода, и что сработало для меня:

document.createElement('form').submit.call(document.getElementById(frmProduct));

2 голосов
/ 25 сентября 2016

присвоение элементу формы имени submit просто затеняет свойство submit. убедитесь, что у вас нет элемента формы с именем submit, и у вас должна быть возможность доступа к функции submit.

1 голос
/ 21 декабря 2017

Возможные решения -
1.Убедитесь, что у вас нет другого элемента с именем / идентификатором в качестве отправки.
2. Попробуйте вызвать функцию как onClick = "return submitAction();"
3. document.getElementById("form-name").submit();

0 голосов
/ 06 декабря 2018

Вы должны использовать этот код:

$(document).on("ready", function () {
       
        document.frmProduct.submit();
    });
...