2015-06-12 5 views
1

У меня есть страница со многими формами, и у каждой формы может быть более одной кнопки отправки, и каждая кнопка имеет некоторые действия «onclick», который указан html.Отправить форму с помощью определенной кнопки

Я создал обработчик onclick через jquery для кнопок отправки, которые предотвращают действие по умолчанию и выполняют некоторую работу, но затем мне нужно отправить эту форму. Если я просто имитирую клик на кнопке - все действия, вызванные onclick, снова работают.

Любые идеи об этом?

Аннотация Пример кода:

<form> 
    <input type='submit' name='first_button' onclick='doSomething()'> 
    <input type='submit' name='second_button' onclick='doSomethingElse()'> 
<form> 
+0

может у опубликовать свой код? – Ghostman

+0

добавьте конкретные и uniqe-идентификаторы в каждую форму, а не с помощью jquery, когда вы слушаете клик, отправьте форму, которую необходимо отправить, с помощью $ ('# mysecondform'). Submit(); –

+0

Если у вас есть 'onclick' для каждого' submit' отправить 'form id' в качестве параметра и отправить эту конкретную' форму' !! –

ответ

-1

Почему эти представления формы? Вы можете сделать Ajax-вызов и отправить все данные на сервер, а затем перезагрузить страницу (или делать с ней все, что хотите);

$.ajax({ 
     url: "your url", 
     type: "POST/GET", 
     data: your data, 
    }).done(function() { 
     location.reload(); 
    }).fail(function (err) { 
     location.reload(); 
     alert(err.statusText); 
    }); 

Или просто попробуйте это:

function OnSubmit(e){ 
    e.preventDefault(); 
    some code here... 

    $(this).off('submit', on_submit_function); 
    $(this).submit(); 
} 

$('form').on('submit', OnSubmit); 
+0

Существует много кода и страниц (более 20 тыс. Строк). Поэтому я пытаюсь создать общий обработчик событий каким-то образом, что код не будет затронут. – Supervision

+0

обновил мой ответ – Fabjan

0

Просто позвоните referenceToFormElement.submit().

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

document.querySelector("[name=first_button]").addEventListener('click', doSomething); 
 
document.querySelector("[name=second_button]").addEventListener('click', doSomethingElse); 
 

 
function doSomething(e) { 
 
    var button = this; 
 
    e.preventDefault(); 
 
    setTimeout(function() { 
 
    alert("Submitting A!"); 
 
    button.form.submit(); 
 
    }, 1000); 
 
} 
 

 
function doSomethingElse(e) { 
 
    var button = this; 
 
    e.preventDefault(); 
 
    setTimeout(function() { 
 
    alert("Submitting B!"); 
 
    button.form.submit(); 
 
    }, 1000); 
 
}
<form> 
 
    <input type='submit' name='first_button'> 
 
    <input type='submit' name='second_button'> 
 
</form> 
 

 
<p>(NB: This won't actually submit because it is on Stackoverflow: Blocked form submission to 'http://stacksnippets.net/js' because the form's frame is sandboxed and the 'allow-forms' permission is not set.)

Смежные вопросы