こんにちは、さち です。
先日、HTML で項目数の多い <form>
を作る機会がありました。
項目を複数ページに分けて「JavaScript」でページを切り替えることにしたんですが、切り替え用の <button>
を押すと <form>
の送信が行われてしまいます。
type="submit"
を付けてない <button>
なのに……どうして?
「type="submit"」でなくても「送信」される
サンプルとして次のような HTML を用意しました。
<form> <div class="member"> <input type="checkbox" name="member" value="kozue"> ︙ <!-- このボタンでも送信されてしまう --> <button>次のページ</button> </div> <div class="song"> <input type="checkbox" name="song" value="zanyou"> ︙ <!-- このボタンでだけ送信したい --> <button type="submit">送信</button> </div> </form>
<form>
のデータを「送信」する <button>
には属性 type="submit"
を付けています。「次のページ」に切り替える <button>
には何も付けていません。
しかし、「次のページ」に切り替える <button>
をクリックすると、「送信」する <button>
と同じ動作をしてしまいます。
「送信」は <button type="submit">
だけで動作して欲しいんだけど……。
解決方法
<form>
<div class="member">
<input type="checkbox" value="kozue">
︙
<!-- このボタンでは送信されない -->
<button type="button">次のページ</button>
</div>
<div class="song">
<input type="checkbox" value="zanyou">
︙
<!-- このボタンは送信される -->
<button type="submit">送信</button>
</div>
</form>
「通常」のボタンには属性 type="button"
を付けることで、「送信」ボタンとして動作することがなくなります。
解決方法はとっても簡単ですが、知らないとハマるので気をつけて下さい。
コメント