Вопрос

Кто-нибудь может сказать мне, что происходит не так с этим кодом?Я попытался отправить форму с помощью JavaScript, но появилась ошибка ".submit не является функцией".Смотрите ниже для получения более подробной информации о коде:

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

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

Это было полезно?

Решение

  

submit не является функцией

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

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

Другие советы

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

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

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

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

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

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

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

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

onclick="return SubmitForm(this.form)"

и с помощью js:

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

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

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

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

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

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

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

Оригинал:

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

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

Я использовал

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

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

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

<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();

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

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

Вы можете попробовать

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

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

</form>

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

Разве у вас не более одной формы с одинаковым именем?

Используйте getElementById:

document.getElementById ('frmProduct').submit ()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top