it-roy-ru.com

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

Может кто-нибудь сказать мне, что происходит с этим кодом? Я попытался отправить форму с помощью 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>

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

222
Jin Yong

отправить не функция

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

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

615
epascarello
<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>

Правка: я случайно поменял удостоверение личности вокруг

11
Chad Grant

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

7
gopeca

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

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

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

onclick="return SubmitForm(this.form)"

и с JS:

function SubmitForm(frm) {
    frm.submit();
}
5
Quangahh

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

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
5
Terbiy

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

Оригинал:

    <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
Zurc Soirrab

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

1
aeid

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

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

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

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

1
jlemley

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

1
Ramki

Решением для меня было установить атрибут "form" кнопки

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

или это JS:

YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name");
YOURFORMOBJ.submit();
0
ProtonIonNeutron

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

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

0
AnilSengul

Что я использовал 

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

Просто потому, что все остальное не сработало.

0
compraspro.com