Как отправить javascript при наличии идентификатора ввода, равного 'submit'

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) .

5
задан Yahel 16 December 2010 в 20:29
поделиться