Ошибка "Submit is not a function" в JavaScript


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

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

12 213

12 ответов:

submit - это не функция

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

когда вы называете кнопку 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>

EDIT: я случайно поменял id вокруг

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

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

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

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

onclick="return SubmitForm(this.form)"

и с js:

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

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

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

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

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

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

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

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

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

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

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