0

数字を持つstruts2選択ドロップダウンリストがあります。デフォルトのキーボード番号を使用して特定の番号を選択する必要があり、それは機能しますが、これでは、たとえば25が必要な場合は2と5を入力できますが、入力すると動作を無効にするために、より具体的にする必要があります2 を入力し、5 を入力するのが遅れると、機能しないため、25 ではなく 20 のみが選択されます。

もう1つは、2が押されて少し遅れて2が再度押されると、20、21、22などのように1ずつ数値が増加し始め、29まで続くという動作を無効にする必要があることです。

私が必要としていた動作は、struts2 ドロップダウン リストが正確に入力したものだけを選択することです。

<s:select list="#{'0':'00','1':'01','2':'02','3':'03','4':'04','5':'05','6':'06','7':'07','8':'08',                 '9':'09','10':'10','11':'11','12':'12','13':'13','14':'14','15':'15','16':'16','17':'17','18':'18','19':'19','20':'20','21':'21','22':'22','23':'23','24':'24'}"  
name="workedHours" cssClass=" disable inputboxsmall" id="workedHours" onchange="calcTotTime()"/>
4

1 に答える 1

1

これはブラウザー固有のものであり、Struts2 はまったく関与していません。

たとえば、Firefoxは非常に古いバージョンからあなたが説明したように動作しますが、IE6では(!)2と5を押すと、「2から始まる」と「5から始まる」を探します(キーボードで25を見つけることはありません) .

ページの準備ができたら、jQuery を使用して Selects にカスタム動作を追加できます。

たとえばonkeyup、以前に数字化された文字を記憶し、それらに新しい文字を追加し、selected属性を新しい対応する要素に再割り当てする、イベントに JavaScript 関数呼び出しを追加します。

次に、例外 (一致する要素がない、何もしない、または何をするか) を処理し、ユーザーが最初からやり直せるようにする方法を決定する必要があります。ブラウザのようにタイマーを使用すると、この問題は発生しませんが、タイマーをオーバーライドする場合は、別の方法 (ホットキーなど) を見つける必要があります。

個人的には、ブラウザーの動作をオーバーライドすることは良いことではないと思います。特に、ほとんどのユースケースに対して既に最適化されているためです...

于 2012-11-20T09:50:32.580 に答える