web-dev-qa-db-ja.com

IE11のみのバグの送信

ページにフォームがあります。

<form action="form/submit" method="post">
    <button type="submit">Submit</button>
</form>

IEの古いバージョンを含むすべてのブラウザーで機能しますが、IE11では失敗しますが、タブが継続的なロードループでスタックし、送信後に「ありがとう」ページに変更されることはありません。ただし、コンソールを開くと機能します。

Console.logの問題を知っていますIEが持っており、すでに使用しています:

if (!window.console) {
    console = {
        log: function() {}
    };
}

それを避けるために、それはうまくやっているようです(言及したように、他のすべてのIEは動作します)。問題がどこにあるかについての洞察はありますか?

23
Brian

この問題は、フォームにname属性のない(または入力要素がない)入力要素しかない場合に発生します。ここでバグへの参照を見つけましたが、リンクが主張するように、メトロモードだけでなくデスクトップモードでも発生します。

http://connect.Microsoft.com/IE/feedback/details/807447/ie-11-metro-version-submitting-form-fails-if-input-tag-has-no-name-attribute

修正方法は、フォームを送信する前に、ダミーの<input type="hidden" name="dummy" value="something">フィールドを(名前と値を設定して)作成することです。

このバグは、IE11が提供するすべての互換モードで発生します。

32
pilif

私はこのバグにあまりにも多くの時間を費やしました。クレイジーな部分は、開発ツール(f12)を開いている場合、IE11がフォーム送信を許可することです。これは、送信ボタンの前に置いたものです。

<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>
10
user3137534

IE11のバグです。次のように、ボタンに名前属性を追加すると修正できます。

<button type="submit" name="foo" ...
9
Alex Baban

名前付き要素のないフォームは、IE11 + W8.1での送信時に無限ループになります。これを修正するには、属性nameをボタンに追加するだけです:

<form action="form/submit" method="post">
  <input type="submit" name="cm" value="Submit">
</form>
6
Toto

これはOPの質問に直接関係しませんが、IEのみのフォーム送信の問題です。

送信イベント中にform.prop('disabled', true)を設定した場合、他のブラウザはフォームデータを送信しますが、IEは送信しません-空のリクエストボディを送信します。

4
Kevin Qi

私にとって、必須とマークされた空の非表示フィールドがありました。かなり愚かですが、それは私のために働いた解決策でした。

0
Jake Cattrall

IE11の場合:

event.returnValue = false;

Event.preventDefaultが存在するかどうかを確認して、最終的なエラーを防止します。

event.preventDefault ? event.preventDefault() : (event.returnValue = false);
0
DependencyHell