プルダウンをマウスでころころ転がしているときに、年齢を求めたい意図と解釈しました
プルダウンを作る時点で、今日に対して、何歳になるか確定している。つまり、イベントうんぬんのまえにページ描画時に確定している
つまりプルダウンを「2000/01/01 18歳」「2000/12/31 17歳」といった表示にすればよい
- 年のプルダウンをさわっているとき
年のプルダウンを選択している時点では、現在月や日は選択が済んでいる(デフォルト値でも選択はなされている状態)。その日が、一年の間で本日以降を指しているか、それより前を指しているかによって、各年に対応する年齢は一意に決まる。
従って例えば「01」月「01」日を指している状態では「2000年 18歳」と出せるし、「12」月「31」日を指している状態では「2000年 17歳」と指せる。これは日や月のonchangeで年プルダウンを再描画すればよいだけ
- 月のプルダウン
日が今日を越えていなければ、月をかえてもかわらない。日が今日を越えていると、今月以降か否かで1歳分かわる
→不正確になるタイミングがあるため要件に対応できない
- 日のプルダウン
月が今月でなければ、日をかえてもかわらない。月が今月であると、日をかえることで一歳分のずれが生じる
→不正確になるタイミングがあるため要件に対応できない
(逆に言えば、年と月日の2つのプルダウンにすれば解決できるとも言える)
結局、今できていないことに対応するには、プルダウンの数をかえるか、スピンボタンや数値入力のUIを導入するほかない。
→このUIの変更が想定するアプリに対して、どの程度不便になるかならないか、また不便になるとして1歳の違いを、マウスでホバー状態にあるほんのわずかな瞬間で知りたいかを検討すればよいと思われる
イベントが発火しないものを検知できると思うのはやめたほうがいいです。