このブログでは、プリズナートレーニングなどの筋トレ用に、2121 Interval Timerという、ブラウザ上で1秒ごとに効果音を鳴らしつつ、3~8秒ごとに次のレップス数を再生するタイマー(Webアプリ)を公開しています。
「2121 Interval Timer」は、望んだ結果をきちんと返すように作ったつもりです。
しかし、以下の3つを入力して「Start」ボタンをクリックすると、あなたが望まない動作をする可能性があります。
- Countdown (3 - 15)(以後: Countdown)
- Reps (1 - 100)(以後: Reps)
- Speed (3 - 8)(以後: Speed)
その時は、以下が参考になるかもしれません。
ここでは、「Countdown」と「Reps」と「Speed」で、意図しない入力が行われた際の仕様をご紹介します。
「Countdown」と「Reps」と「Speed」で、意図しない入力が行われた際の仕様
「Countdown」と「Reps」と「Speed」は、以下の方法で入力(選択)することを想定しています。
- キーボードからの入力
- キーボードの上矢印キー(↑)、下矢印キー(↓)で選択
- スピンボタン(「Countdown」や「Reps」の、入力欄の横の上下ボタン(▲/▼))で選択
そのうち、以下の方法では、指定した範囲内の数値しか選択できないため、問題はありません。
- キーボードの上矢印キー(↑)、下矢印キー(↓)で選択
- スピンボタン(「Countdown」や「Reps」の、入力欄の横の上下ボタン(▲/▼))で選択
しかし、キーボードから入力した場合、入力欄を以下のような状態にすることが可能です。
- +
- -
- .
- e
- 入力欄を空欄にする
- 最小値を下回る数値(例: -1)
- 小数(例: 3.1)
- 最大値を上回る数値(例: 101)
そのため、「Countdown」と「Reps」と「Speed」では、入力(選択)された値を、整数値に変換します。
その上で、以下のような仕様にしています。
- 整数値に変換できなかった場合(例: 空欄): 既定値に設定
- 最小値よりも小さな数値(例: -1)が入力された場合: 最小値に設定
- 最大値よりも大きな数値(例: 101)が入力された場合: 最大値に設定
以上が、「Countdown」と「Reps」と「Speed」で、意図しない入力が行われた際の仕様です。