Загрузка форм с помощью .load убивает кнопку отправки в Firefox - PullRequest
0 голосов
/ 28 февраля 2012

В настоящее время я загружаю несколько форм на веб-страницу с:

$(document).ready(function () {
    $('#content').load('php_script.php', function() {
        $(this).find('#someForm').ajaxForm(function() {
            alert('Success!');
        });
        $(this).find('.someOtherForm').ajaxForm(function() {
            alert('Success!');
        });
    });
});

Это работает в Chrome, Chromium и IE, которые загружают формы, и все работает как надо. ). В Firefox (v10.0.2) этот код загружает формы в DOM и отображает их, но при нажатии кнопки «Отправить» на любой из форм ничего не происходит.

Сначала я заподозрил ajaxForm, но изменил приведенный выше код на:

$(document).ready(function () {
    $('#content').load('php_script.php');
});

дает почти тот же результат, с той разницей, что пользователь отправляется в сценарий, определенный как действие (за исключением Firefox, где ничего не происходит).

Как заставить Firefox не убивать кнопку отправки?

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Я решил, плохой HTML с моей стороны:

<table><form ...>
    <tr>...</tr>
</form></table>

Вместо этого он должен выглядеть следующим образом:

<form ...><table>
    <tr>...</tr>
</table></form>

Валидатор не уловил это, так как он был загружен через jQuery (и я забыл проверить страницу, обслуживающую формы), и Firefox вышел из строя.

0 голосов
/ 28 февраля 2012

Код выше выглядит нормально для меня ...

  1. Вы смотрели в firebug, если есть какие-либо ошибки? Возможно, существует конфликтующий идентификатор или что-то в этом роде.

  2. Возможно, форма еще не полностью загружена в dom, возможно, стоит попробовать попробовать связывание в реальном времени

  3. Найдено в документации:

... jQuery использует свойство браузера .innerHTML, чтобы проанализировать полученный документ и вставить его в текущий документ. Во время этого процесса браузеры часто фильтруют элементы из документа, такие как, или элементы. В результате элементы, извлекаемые с помощью .load (), могут не совпадать, как если бы документ был получен непосредственно браузером ...

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

...