0

現在、次のようにいくつかのフォームを Web ページに読み込んでいます。

$(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 で機能し、すべて正常に機能します ([送信] をクリックすると、フォームのアクションで定義された php-script にリクエストが送信され、データベースに内容が追加され、アラート ダイアログが表示されます)。Firefox (v10.0.2) では、このコードはフォームを DOM にロードして表示しますが、いずれかのフォームで [送信] をクリックしても何も起こりません。

最初は ajaxForm を疑いましたが、上記のコードを次のように変更しました。

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

ほとんど同じ結果が得られますが、違いは、ユーザーがアクションとして定義されたスクリプトに送られることです (Firefox は例外で、何も起こらない)。

Firefox で送信ボタンを強制終了させないようにするにはどうすればよいですか?

4

2 に答える 2

1

私はそれを解決しました、私の側からの悪いHTML:

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

代わりに、次のようになります。

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

これは jQuery を介してロードされたため (そして、フォームを提供するページを検証するのを忘れていました)、Firefox がバグを検出したため、バリデーターはこれをキャッチしませんでした。

于 2012-02-29T08:51:25.577 に答える
0

上記のコードは私には問題ないように見えます...

  1. エラーがある場合は、firebug を調べましたか? 競合する ID か何かがある可能性があります。

  2. フォームがまだ DOM に完全にロードされていない可能性があります。ライブバインディングを試してみる価値があるかもしれません。

  3. ドキュメントでこれを見つけました:

...jQuery は、ブラウザーの .innerHTML プロパティを使用して、取得したドキュメントを解析し、現在のドキュメントに挿入します。このプロセス中に、ブラウザーは、 、 、または要素などの要素をドキュメントからフィルター処理することがよくあります。その結果、 .load() によって取得された要素は、ドキュメントがブラウザーによって直接取得された場合とまったく同じではない可能性があります...

フォームを調べると、他のブラウザと同じですか?

于 2012-02-28T12:08:26.887 に答える