I ' Мы привязывали события отправки к формам и следили за тем, чтобы они не нарушали форму, используя jQuery следующим образом:
jQuery('form').submit(function(e){
var form = this;
e.preventDefault();
alert('1');
setTimeout(function() {
alert('2');
form.submit();
}, 1000);
});
Это все хорошо, за исключением случаев, когда по какой-то причине разработчик интерфейса дал дочерний ввод этой формы id = "submit", это прерывается, поскольку form.submit ()
выдает ошибку JavaScript (в Chrome 'Uncaught TypeError: свойство' submit 'объекта # не является функцией').
Вы можете увидеть пример того, что происходит здесь: http://jsfiddle.net/q68ky/ (Вот поведение, если нет
: http://jsfiddle.net/JpXzL/
Теперь я знаю, что могу предотвратить привязку этого к формам, у которых есть дочерние элементы с идентификатором 'submit', с помощью jQuery ('form'). not (: has ('# submit')). submit ()
, и форма будет обрабатываться нормально, но моя привязка никогда не сработает для этих форм.
Итак, вопрос: как я могу безопасно привязать эту функцию jQuery ко всем формам, включая те, у которых есть
?
РЕДАКТИРОВАТЬ: стоит отметить, что эта проблема не исчезнет, если я отключу обработчик отправки, а затем инициирую отправку jQuery на jQuery (form)
.