試合結果の打撃表作成ツールで、
セレクトボックスを使用して各項目を選択しているが、
例えば、一人の打席でも、打つ前に、エラーが連続して複数回起きるときもある。
この場合に、現在は以下のようにしているので、
同じ項目を連続して指定しても1回しか入力できない。
連続して入力するには、一度選択し、次に同じ項目を選択するには、
一度白紙項目を選択し、続けて再度同じ項目を選択する必要がある。
属性<SELECT NAME="nzoku" onChange="n_zoku+=options[this.selectedIndex].value">
そこで、連続して同じ項目を指定しても連続して同じ項目が入力できる方法を考えた。
なにしろ、一度指定したものは、指定した内容が表示されていないと、
何を指定したのか分からなくなるので、これは守るとして、
そうすると、セレクトボックスで指定し、
指定した項目を別の領域に表示し、指定したセレクトボックスは白紙に戻す。
→これは単純でいいが、表示領域が倍になるので、PDAではキツイ。
ので、ボツ。
したがって、
?セレクトボックスで一度指定して、
?指定した項目が表示され、
?連続して同じ項目を指定したときでも、
?同じ項目が入力されないと困る。
すなわち、
一度目の?で「onChange」イベントで選択項目をゲットし、
連続指定?で再度「onChange」イベントで選択項目をゲットできればいい。
しかし、現状では、?で「onChange」イベントが発生しない。
それは、すでに選択している項目を再度指定しても
すでに選択しているので、変更ではないのでonChangeイベントは発生しない。
ということは、
?では、既に選択していた項目を違う項目
すなわち、白紙項目が選択されている状態に
しておけばいい。
どうやって。。。。
で、いろいろ試行錯誤して、
「onfocus」イベントがある。
これを利用できないか考えた。
すなわち、
「onfocus」イベントが発生したときに、白紙項目に選択を変更する。
でやってみたら、
一度目は、最初に発生するが、2度目連続で指定しても、
既にフォーカスがあるので、2度目は発生しない。。。。。
ということで、
それなら、1度目の「onChange」時に、選択項目をゲット後、
「blur()」でフォーカスをはずせば、2度目指定してもフォーカスが来るのではと。
結果、出来ました。
属性<SELECT NAME="nzoku" onChange="n_zoku+=options[this.selectedIndex].value;this.blur()"
onFocus="this.selectedIndex=0">