Ошибка "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 ответов


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: я случайно поменял идентификатор вокруг


убедитесь, что нет другой формы с тем же именем и убедитесь, что в форме нет 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.Убедитесь, что у вас нет другого элемента с именем/id в качестве отправки.
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 ()