HTMLの一つのForm内で、複数ボタンのどれが押されたかを判別する方法について。
以前調べる機会があったのでメモ書き。
■方法1 type="submit"の場合
type="submit"の場合、name・valueはサーバ側に送られるので、それを使って区別できる。
・HTML側
<form action="xxx">
<input type="submit" name="Next" value="次へ">
<input type="submit" name="Back" value="戻る">
</form>
・Servlet側
if (req.getParameter("Next") != null) {
// 「次へ」処理
} else if (req.getParameter("Back") != null) {
// 「戻る」処理
}
といった感じで、押されたボタンを区別できる。
■方法2 type="button"の場合
type="button"の場合、nameもvalueもサーバ側に送られない。
そのためJavaScriptを使う。
hidden属性のオブジェクトを用意し、ボタン押下時にJavaScriptで「ボタンの名前をオブジェクトにセットし、submit()」という方法がある。
受取側はオブジェクトにセットされている値でボタンを区別できる。
・HTML側
<script type="text/javascript">
<!--
function goSubmit(formObj, btnObj) {
formObj.action.value=btnObj.name;
formObj.submit();
}
// -->
</script>
<form action="xxx">
<input type="hidden" name="action">
<input type="button" onClick="goSubmit(this.form, this)" name="Next" value="次へ">
<input type="button" onClick="goSubmit(this.form, this)" name="Back" value="戻る">
</form>
・Servlet側
if ("Next".equals(req.getParameter("action"))) {
// 「次へ」処理
} else if ("Back".equals(req.getParameter("action"))) {
// 「戻る」処理
}
といった感じで、JavaScriptで設定したactionの値で区別できる。
なお携帯向けサイトではJavaScriptが動作しない機種があるため、方法1を使ったほうが良い。
2 件のコメント:
簡潔でわかりやすい記事ですね。参考にさせてもらいました。
The Borgata Hotel Casino & Spa in Atlantic City - JTM Hub
The Borgata Hotel Casino & Spa offers a restaurant, a bar, 안산 출장안마 a nightclub, and a spa. The 동해 출장샵 resort's 15,000-square-foot casino features 광명 출장마사지 1,200 slots, over 안성 출장마사지 70 밀양 출장안마 table
コメントを投稿