Подтвердить что ты не робот

JQuery переопределить форму submit не работает, когда submit, вызываемый javascript на элементе

У меня есть страница с нормальной формой с кнопкой отправки и некоторым jQuery, который привязывается к событию отправки формы и переопределяет его с помощью e.preventDefault() и запускает команду AJAX. Это отлично работает, когда нажата кнопка отправки, но при нажатии ссылки с onclick='document.formName.submit();' событие не попадает в обработчик событий отправки формы AJAX. Любые идеи, почему бы и нет, или как заставить это работать без привязки ко всем элементам?

4b9b3361

Ответ 1

Несколько предложений:

  • Перезапишите функцию отправки, чтобы сделать ваши злое предложение

    var oldSubmit = form.submit;
    form.submit = function() {
        $(form).trigger("submit");
        oldSubmit.call(form, arguments);
    }
  • Почему бы не привязать ко всем <a> теги? Тогда вам не нужно делать какие-либо попытки обезвреживания обезьян, и это может быть так же просто, как (предполагая, что все ссылки находятся внутри тега формы):

    $("form a").click(function() {
        $(this).parents().filter("form").trigger("submit");
    });

Ответ 2

Если вы используете jQuery, вы должны присоединять события через собственный механизм событий, а не с помощью свойств "on" (onclick и т.д.).). Он также имеет свой собственный метод запуска событий, точно названный 'trigger', который вы должны использовать для активации события отправки формы.

Ответ 3

Спасибо Eran

Я использую этот код привязки события

this._form.bind('submit', Delegate.create(this, function(e) {
    e.preventDefault();
    this._searchFadeOut();
    this.__onFormSubmit.invoke(this, new ZD.Core.GenericEventArgs(this._dateField.attr('value')));
});

но в HTML есть устаревший код onclick, и я бы предпочел не изменять его, поскольку есть так много ссылок.

Ответ 4

Это сработало для меня:

Сделайте пустую кнопку, скройте реальную отправку с именем submit,

а затем:

$("#mySubmit").click(function(){
    $("#submit").trigger("click"); });

установите обработчик событий на вашем манекене, чтобы вызвать щелчок по кнопке отправки формы. пусть браузер выяснит, как отправить форму... Таким образом вам не нужно preventDefault в форме submit, в которой начинается проблема.

Казалось, что это проблема.