Немного объясню зачем мне надо вешать обработчик именно на submit.
В современной web разработке очень часто возникает необходимость отправлять формы аяксом. поэтому, чтобы не писать один тот-же код на разных страницах, я решил сделать универсальную функцию: function FormSubmitAjax(sel1, success, sel2){ $(sel1).on('submit', sel2, function(ev){ ev.preventDefault(); var form = $(ev.target); $.ajax({ type: form.context.method, url: form.context.action, data: form.serialize(), context: { form: form}, success: function(dat, status){ success.apply(this, [dat, status]); }, }); }); } однако при практическом использовании выяснилось что <input type="submit" name="test"/> не посылается, вот ищу способ, как это исправить. |
Метод serialize() не возвращает поля отправки файлов и кнопки отправки формы, но ни ко не запрещает form.serialize() + "&" + и добавить кнопку. Зачем она только нужна не понятно.
|
winch,
function ajaxFormSubmit(selector, settings) { $(selector).submit(function(e) { e.preventDefault(); var $form = $(this), $button = $form.find(':submit:focus'); if (!$button.length) return; $.ajax($.extend({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&' + $.param($button), context: $form }, settings)); }); } ajaxFormSubmit('#myForm', { success: function(data, status, xhr) { // this == $form var $form = this; // ... }, error: function(xhr, status, error) { // this == $form }, beforeSend: function(xhr, settings) { // this == $form } }); |
Цитата:
|
Rise
ага! основная идея в том, чтобы перед отправкой найти нажатую кнопку селектором ':submit:focus' спасибо! воспользуюсь. |
Часовой пояс GMT +3, время: 16:28. |