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