2016-10-07 9 views
-2

下記のコードをご覧ください。 IE11 /バックボタンがページ上の両方の形式でのonSubmitイベントを発火している縁に 間違ったフォームが提出されました

<!DOCTYPE html> 
 
<html> 
 
<body> 
 
<form action="#" method="post" id="frmIdSave" name="frmNmSave" onsubmit="alert('Save');return false;"> 
 
<div> 
 
\t <input type=submit class="greyBttn" value="Save" id="btnIdSave" name=btnNameSave/> 
 
\t <input type="hidden" name="testsave" value="1" /> 
 
\t </form> 
 
\t <form action="#" id="frmback" name="frmback" onsubmit="alert('Back');return false;"> 
 
\t <input type="submit" class="greyBttn" value="Back" id="btnIdBack" name="btnNameBack"/> 
 
\t <input type="hidden" name="testback" value="1" /> 
 
\t </form> 
 
</div> 
 
</body> 
 
</html>

これは、最初のフォームタグが部門外にあるためです。

どうすればこの問題を解決できますか?

おかげ

サイモン

+0

何をしたいですか? –

答えて

3

最初のフォームタグが本部の外にあるからです。

はい

どのように私はこのラウンドを取得することができますか?

書込みvalid HTML。 div内に移動します。

+0

私のサンプルコードは非常に単純化されています。現実には、フォームタグとそのdivの間に、フォームのためのフィールドを持つ他のdivやセクションがあります。これは、データを保存する場所のちょっとした部分です。これはIE11/Edgeのみであることに注意してください。 – Simon

-1

私は以下のコードで解決しました。 javascriptを使用して送信すると、フォームのonsubmitイベントが呼び出されないので、これに対する完全な解決策は、すべてのonsubmitコードを別の関数に抽象化することに注意してください。

<!DOCTYPE html> 
<html> 
<body> 

<form action=# method=post id=frmIdSave name=frmNmSave onsubmit="alert('Save');return false;"> 
<div> 
<input type=submit class="greyBttn" value="Save" id=btnIdSave name=btnNameSave/> 
<input type=hidden name=testsave value='1'/> 
<input type=button class="greyBttn" onclick='document.getElementById("frmback").submit();' value="Back" id=btnIdBack name=btnNameBack/> 

</div> 
</form> 

<form action=# id=frmback name=frmback onsubmit="alert('Back');return false;"> 
<input type=hidden name=testback value='1'/> 
<input type=submit> 
</form> 

</body> 
</html> 
関連する問題