2012-01-09 3 views
2

У меня возникла проблема с последней функцией on() jQuery 1.7. Я перемещаю все мои существующие вызовы live() на новую функцию on().jQuery 1.7 .on() и Dynamic Form Catching

В прошлом я использовал live() всякий раз, когда создавал новый элемент или добавлял некоторую разметку из AJAX.

С jQuery 1.7 Если я добавляю разметку формы, возвращенную через AJAX, и попытаюсь использовать e.preventDefault или return false, чтобы остановить ее от отправки (например, для ее подтверждения) - форма отправляется как обычно.

$(document).on('submit', 'form', function(e) { 
    alert('You tried to submit the form'); 
    e.preventDefault(); 
}); 
+0

здесь не совсем положительный, но, возможно, попробуйте привязать его непосредственно к форме? – kand

+0

@kand, который победил бы цель. –

+0

Не могли бы вы создать скрипку, которая вызывает эту проблему? Кажется, он работает http://jsfiddle.net/markcoleman/E6e79/1/. –

ответ

0

Это было подтверждено как ошибка JQuery в 1.7.1, должно быть зафиксировано в 1.7.2: http://bugs.jquery.com/ticket/11145

Мой исходный код является правильным (для динамических элементов DOM). Код Адама Ракиса верен для существующих элементов DOM.

1

Ваш код действителен.

DEMO

Если вы разместите несколько больше кода мы могли бы посмотреть и увидеть, если у вас есть другие проблемы


Но если предположить, эта форма присутствует, когда страница отображается, Я бы просто сделать это:

$("form").on('submit', function(e) { 
    alert('You tried to submit the form'); 
    e.preventDefault(); 
}); 

(Я предполагаю, что ваша страница отображается с формой уже присутствует)

+0

Кажется, моя проблема связана с одним из моих элементов формы. Насколько я могу видеть атрибут 'name =" disabled "' атрибута законного имени? (Я * не * пытаюсь отключить это поле, просто дайте ему значение имени 'disabled') См. Измененную версию кода Адама [здесь] (http://jsfiddle.net/HtA58/) (оригинальная демонстрация [здесь] (http://jsfiddle.net/xzeVX/)). Как вы можете видеть, форма отправляется. Является ли это ошибкой jQuery или является 'name =" disabled "' незаконным? – steveneaston

+0

@steveneaston - не уверен, что это недопустимое имя или нет. Это вопрос для html-гуру :) Возможно, вы захотите спросить новый Q с тегами 'html'' dom' и 'javascript'. –