1

別のフォームを含むフォームがあります。
JavaScript を使用してネストされたフォームを送信すると、Internet Explorer では 2 回送信されますが、他のブラウザーでは 1 回だけ送信されます。
ネストされたフォームを送信して、IE で 1 つの要求のみを送信する方法。

編集:

入れ子になったフォームを送信するために onchange イベントを使用しています。私の場合、クリックはどのように機能しますか?

4

1 に答える 1

2

フォームをネストするべきではありませんが、イベントの伝播を停止できます。たとえば、clickイベントが外部フォームを送信する場合は、次のようにします。

$("form").on("click", function(e){
   e.stopPropagation();
});

イベント委任に関する注意事項を必ずお読みください。

また、フォームをネストする必要はありません。必要に応じて、1 つのフォーム内に送信ボタンを配置して、まったく別のフォームを送信することができます。formボタン自体の属性を使用するだけです。

<form id="foo">
    <!-- Within #foo, but I submit #bar -->
    <input type="submit" form="bar" value="Within Foo" />
</form>

<form id="bar">
    <!-- Within #bar, but I submit #foo -->
    <input type="submit" form="foo" value="Within Bar" />
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

この属性は、Internet Explorer 10 ではこのようにサポートされていないことに注意してくださいform。次のような単純なロジックを使用して、このロジックにパッチを適用できます。

$(":submit[form]").on("click", function ( e ) {
    $( "#" + $(this).attr("form") ).submit();
    e.preventDefault();
});
于 2012-10-17T14:00:20.227 に答える