Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   При AJAX-запросе не посылается кнопка 'submit' (https://javascript.ru/forum/events/43637-pri-ajax-zaprose-ne-posylaetsya-knopka-%27submit%27.html)

winch 30.05.2016 19:52

скажите, а при использовании события onsubmit определить по нажатию какой из кнопок это произошло, возможно?

winch 30.05.2016 22:01

еще раз перечитал, нашел только способ, если обработчик вешать на click самих кнопок, но не на submit формы.

DynkanMaclaud 30.05.2016 22:42

winch,
document.forms[0].onsubmit = function(event) {
  alert(event.target.tagName);//form
}

не получишь ты так кнопку...
вешай на клик кнопки... в чем проблема?

winch 31.05.2016 05:09

дык вот в том то и дело, что не посылаются значения кнопки на сервер (вернее на берутся функцией serialize), если обработчик навешан на submit формы. а я именно об этом спрашивал.

winch 31.05.2016 05:23

Немного объясню зачем мне надо вешать обработчик именно на 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"/> не посылается, вот ищу способ, как это исправить.

laimas 31.05.2016 13:17

Метод serialize() не возвращает поля отправки файлов и кнопки отправки формы, но ни ко не запрещает form.serialize() + "&" + и добавить кнопку. Зачем она только нужна не понятно.

winch 31.05.2016 22:36

Цитата:

Сообщение от laimas (Сообщение 418080)
Метод serialize() не возвращает поля отправки файлов и кнопки отправки формы, но ни ко не запрещает form.serialize() + "&" + и добавить кнопку. Зачем она только нужна не понятно.

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

winch 31.05.2016 22:43

Rise
ага! основная идея в том, чтобы перед отправкой найти нажатую кнопку селектором ':submit:focus'
спасибо! воспользуюсь.


Часовой пояс GMT +3, время: 01:38.