2016-11-30 17 views
0

Я огляделся и нашел много похожих ответов, но в представлении формы, которое у меня есть, в моем коде не удается. Что, кажется, отсутствует или неверно, что препятствует отправке формы, когда нажаты кнопки «отправить» и подтверждены с помощью SweetAlert?Резюме Форма Отправить после PreventDefault

http://plnkr.co/edit/NL7r4E9UKVjGSBbAwt86?p=preview

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 
     <input type='submit' name='submit' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit' id='submitTest2' value='Submit 2'> 
    </form> 

Нажатие кнопки "Да, я уверен, что" тогда "Ok" не представляет форму.

UPDATE: я упростил код: http://plnkr.co/edit/A9aDycYhIkJcTmK5qIUS?p=preview

ответ

3

Элемент формы имеет метод с именем submit, но также имеет элементы формы в форме в качестве элементов.

Если у вас есть button в форме с именем submit, вы можете получить к нему доступ, используя document.form1.submit. Однако, поскольку это то же имя, что и метод отправки, больше нет способа доступа к этому методу. Если вы используете метод для отправки формы, это больше не будет работать.

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

HTML:

<form id='submissionForm' autocomplete='off' method='POST'> 
     <button>Save</button> 

     <input type='submit' name='submit1' id='submitTest1' value='Submit 1'> 
     <input type='submit' name='submit2' id='submitTest2' value='Submit 2'> 
    </form> 
+0

vispan хорошо заметил проблему. –

+0

Отлично! Спасибо! – theflarenet

0

Ваша форма объекта является простой JavaScript Object и не имеет доступа к методу представить JQuery в.

Wrap объект формы в JQuery обертка $(form).submit()

Не уверен, что если ваниль Javascript является обязательным требованием, как я увидел, что JQuery был включен в plnkr, но я тестировал с помощью submit() метода JQuery вместо данного яваскрипта метода , и это сработало.

При создании переменной формы, сделать this объект JQuery var form = $(this);

+0

представить() также является стандартным методом JS. –

+0

Верно, но используя метод отправки jQuery, отправленный формой. Возможно, я должен переформулировать этот ответ. – JB06

2

использование removeEventListener удалить обработчик события перед отправкой во второй раз.

Вот ваша обновленная скрипка: http://plnkr.co/edit/lXUtzlMISxztGVvucFQS?p=preview

Как отмечено в ответе, тот факт, что у вас есть элементы формы, названные «представить» является переопределением метода .submit(). Вы должны избегать использования «submit» в качестве имени в кнопках отправки. измените, что он должен работать.

+0

С этим я все еще получаю 'Uncaught TypeError: form.submit не является функцией' в консоли при нажатии« ОК »сообщения об успешном завершении – empiric

+0

Интересно! Я пробовал свой код, и форма еще не отправляется после подтверждения SweetAlert. – theflarenet

+0

@theflarenet - Как указано в другом ответе, проблема с именем отправки. Я обновил ответ. –