Я проверяю простую форму с помощью jQuery 1.6 с помощью обработчика события .submit(), который возвращает false, когда форма недействительна:
$(function() {
$('#my-form').submit(function(event) {
if (true) { // for testing, always go through the failure path
alert("Invalid entry");
return false;
} else {
return true;
}
});
});
Если пользователь сделал выбор, форма была отправлена должным образом. Если пользователь не сделал выбор, появится предупреждение, и форма не будет отправлена (опять же, правильно). Проблема в том, что в этом случае кнопка отправки больше не работает. Другими словами, после возникновения сбоя пользователь остается в форме, но нажатие кнопки отправки ничего не делает.
Я проверил HTML (нет дубликатов идентификаторов, нет имен/идентификаторов "submit", "length" и т.д.). Форма загружается динамически, поэтому тестирование с Firebug является проблемой. Другие обработчики событий в форме работают нормально (например, я вижу предупреждения при изменении значения поля). Еще одна странность: я заменил "return false" на "event.preventDefault(); return true", но форма все еще представлена. (Я думал, что .preventDefault() остановит это.)
Любые идеи?
EDIT. Этот подход работает:
$(function() {
$('#my-form :submit').click(function(event) {
if (...validation stuff goes here...) {
alert("Invalid entry");
return false;
} else {
$('#my-form').submit();
}
});
});
Мне все равно хотелось бы узнать, что случилось с моим обработчиком обработчика original.submit().