MW211 EXIT

devlog
PHP/プルダウンメニューによる実行
2011年09月16日
プルダウンメニューを選択し、実行ボタンで確定する処理の場合、
以下のような実装になる。
┌──────────────────────────────────────┐
│<form>                                                                      │
│<select name="■■">                                                        │
│</select>                                                                   │
│<input type="submit" name="run" value="確定"/>                              │
│</form>                                                                     │
└──────────────────────────────────────┘
しかし、ボタンを省略して、プルダウンのみで確定させてい場合は、
<select>タグに以下のような「onchange属性」をつけて
JavaScriptで「submit()」させればいい。
┌──────────────────────────────────────┐
│<select name="■■" onchange="submit(this.form)">                           │
└──────────────────────────────────────┘
ただしこの場合、POSTパラメータ(もしくはGETパラメータ)に
$_POST['run'](='確定')が渡らない
→ボタンが複数あったりして、こいつで識別したい場合には厄介だ。

これを実現するには、ひと手間(ふた手間?)加える必要が出てくる。
(1) submitを直接実行するのではなく、一旦ユーザ関数を経由するようにする
┌──────────────────────────────────────┐
│<select name="■■" onchange="submit2(this.form)">                          │
└──────────────────────────────────────┘
(2) (JavaScriptの)ユーザ関数で、hidden属性を生成した上でsubmitする
┌──────────────────────────────────────┐
│<script type="text/javascript">                                             │
│  function submit2(inForm){                                                 │
│    // hidden属性の生成                                                     │
│    var e = document.createElement('input');                                │
│    e.type  = "hidden";                                                     │
│    e.name  = "run";                                                        │
│    e.value = "確定";                                                       │
│    inForm.appendChild(e);                                                  │
│    // submit                                                               │
│    inForm.submit();                                                        │
│  }                                                                         │
│</script>                                                                   │
└──────────────────────────────────────┘
本格的にJavaScript記述が必要なので、ちょっとめんどくさいかも。
分類:PHP