Предотвращение отправки одной формы и отправка другой - надежен ли этот подход? - PullRequest
2 голосов
/ 16 ноября 2010

Безопасно ли - в обработчике отправки события для одной формы - отправлять другую форму и возвращать false, чтобы предотвратить отправку первой формы?

$("#form1").submit(function() {
    $("#form2").submit();
    return false;
});

Я использую этот подход, иэто работает (по крайней мере, в IE6).Тем не менее, я обеспокоен тем, что это может не работать в других браузерах.Может ли вызов submit как-то отменить return false?

Альтернативный подход, который я рассматривал, это

$("#form1").submit(function() {
    setTimeout('$("#form2").submit();', 10);
    return false;
});

.... но это может добавить сложность там, где ее нетдействительно необходим.

Причина, по которой это необходимо сделать, заключается в том, что пользователь отправляет form1, но в определенном сценарии (который я могу обнаружить с помощью JavaScript) это вызывает ошибку, которую можно исправить.вместо этого, указав некоторые данные в одном из полей form2, а затем отправив эту форму.

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010

Ваш код должен работать во всех браузерах, но если вы хотите быть абсолютно уверены, вы могли бы сделать

$("#form1").submit(function(evt) {
    evt.preventDefault(); // cancel the default behavior
    $("#form2").submit();
    return false;
});

Использование метода .preventDefault() гарантирует, что вы отмените поведение по умолчанию перед тем, как сделает что-то, что может помешать ему ..

1 голос
/ 16 ноября 2010

Ваш оригинальный подход должен работать везде.

...