Для именования полей в форме не стоит использовать имена (или 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 тоже, потому как получите аналогичную ошибку.