Поле формы с именем submit

Для именования полей в форме не стоит использовать имена (или ID), совпадающие с методами объекта формы. То есть reset и submit. Это важно, если вам необходимо отправлять форму с помощью javascript.
При попытке отправить форму методом submit() вы увидите в консоли:

Uncaught TypeError: Property 'submit' of object #<HTMLFormElement> is not a function

Коротко дело здесь в следующем. Когда вы «стучитесь» к методу формы submit() привычным способом (вариант для jQuery), как-то так:

<form id="testForm">
    <input name='submit'/>
    <input type='submit' id='testButton' value="test"/>
</form>

<script>
    var form = document.getElementById('testForm'),
        button = document.getElementById('testButton');
    form.onsubmit = function(){
        return false;
        //отключаем обычный сабмит, чтобы отправить форму
        //с помощью javascript
}
    button.onclick = function(){
    form.submit();
}
</script>


— вы получите ошибку на строчке form.submit(). Почему?

Когда вы пытаетесь отправить форму командой form.submit(), вы пытаетесь обратиться к методу формы по имени submit. Но на деле обращаетесь к элементу по имени submit. О чём вам и сообщает консоль, что HTMLFormElement submit не является функцией!
Столкнулся с этим буквально на днях, хотя такое поведение форм уже обсуждалось.

Простое резюме: не стоит использовать в форме поля с именем submit. Да и reset тоже, потому как получите аналогичную ошибку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *