Web系のこととかー。

onClick=”submit()” + type=”submit” が重なると…

あんまりない状況だとは思うのだけど、フォームをsubmitするonClickイベントが重なった場合、ブラウザによって挙動が違ったのでメモ。

例えば下記のようなHTMLの場合

<form action="" name="form">
	<div onclick="javascript:goSubmit()" style="background-color:#ffeeee;padding:30px;">
		<input type="submit" />
	</div>
</form>
<script>
function goSubmit(){
	document.form.submit();
}
</script>

<div>自体にonClickを指定して、フォームをsubmitするようにしている。

この時、<input type=”submit” />をクリックすると、InternetExplorerの場合のみ、二重にsubmitされる。Firefox/ChromeなどはgoSubmit()を実行するだけ。

なので、こういった形式を使いたい場合は

<form action="" name="form">
	<div onclick="javascript:goSubmit()" style="background-color:#ffeeee;padding:30px;">
		<input type="button" />
		<button></button>
		<img />
	</div>
</form>
<script>
function goSubmit(){
	document.form.submit();
}
</script>

などのsubmitしないボタンに変えてやると良い。

ただし、この場合はJavaScriptがオフになっていると、うんともすんとも言わないので、そこら辺は配慮する必要がある。

§205 · 11月 18, 2010 · プログラミング_JavaScript · · [Print]

Leave a Reply