web-dev-qa-db-ja.com

日付ピッカーの機微:数字キーを使用して年を入力する

date pickerを開発しており、ユーザー入力の解釈に関連する問題が発生しています。

以下の図のように日付ピッカーがあり、ユーザーが数値キーを使用して年を変更する場合を想定します。

enter image description here

明らかに、1年(はるか未来まで)は4桁です。ただし、多くのユーザーは、数字キーを使用するこのような手順に慣れています。

"dd" [tab] "mm" [tab] "yy" [tab/leave]

つまり、年を表す2桁のみを入力します。私の質問はこうです:

  • このようなシナリオに対応するための最も妥当な動作は何ですか?

私たちの暫定的なアプローチはこれです:

  • 00 <= "yy" <= 29は、2000(下限)および2029(上限)を意味すると見なされます
  • 30 <= "yy" <= 99は、1930(下限)および1999(上限)を意味すると見なされます

しかし、ユーザーが「yyy」を入力し、入力フィールドを離れた場合はどうなるでしょうかどう解釈されますか?

この場合、4桁目が入力されるまで、アプローチは何も変更されません。あれは:

  • "1"-> 2001
  • 「9」-> 2019
  • "7"-> 2019
  • "8"-> 1978

5桁目が入力されると、上記の順序付けされていない一番上のリストで説明されているルールに従ってプロセスが最初からやり直されます。

これについての考えは高く評価されます。

3
agib

私が見ているように、このシステムには複数の潜在的な問題があります

  • 1920を入力して2桁の形式を使用する場合、1920ではなく2020であると想定されます。
  • 現在の形式では、実際に保存される内容は不明確です
  • 20111を誤って入力すると、年がリセットされ、もう一度開始する必要があります。

おそらく、「XXXX」または現在の年のいずれかを使用して、予想される形式を知ることができます。

これは少し範囲外ですが、正直な間違いのために日付が十分な範囲([01/01/1900-01/01/2100]のようなもの)の外にある場合は、ユーザーにわかりやすい通知を表示できます。ユーザーがボックスに入力する内容を制限しないことがポイントです。ユーザーが正しい日付を入力したい場合は、そうでない場合は、システムをゲームして送信ボタンの後にあるものにアクセスしようとします。

2
Liviu A

日付ピッカーは単なるテキストボックスである必要があります。現在のカルチャの標準の日付形式(必要な場合)を使用して実際の日付オブジェクトを決定するために、それを舞台裏で機能させます。マウスで日付を選択できるようにするためのGUI要素が必要な場合は、プログレッシブ拡張を使用してそれを実行します。

あなたが言及する日付を入力するための「手順」に多くのユーザーが慣れているということには強く反対します。ほとんどの場合、カレンダーコントロールをポップアップする小さなアイコンが付いたテキストボックスが表示されます。それが実際に日付ピッカーコントロールを開発する理由の問題につながりますか?すでに利用可能な多数の日付ピッカーコントロールの1つを使用してみませんか?

2桁の年を処理する方法については、2桁の年を入力する人はほとんどいないと考えるのはかなり安全だと思います。そして、もしそうなら、あなたがその人の生まれた年について話しているのでない限り、あなたの仮定としてこの時点で20XXを使用することはおそらく良いことだと私は言うでしょう。そのような状況では、私は常に4桁の年を強制します。

2
Charles Boyung

実際のところ、実際に定期的に日付を入力している人(仕事で1日に何度も)は、2桁の形式にまだ慣れていると思います。人々が入力を何回使用する必要があるかは重要だと思います。これがユーザーごとに1回または非常に制限されている場合は、さらに制限することができます。これが1日に何度もフォームを使用する専門家を対象にしている場合は、反対するのではなく、一緒に作業してください。

実際の年についてすぐにフィードバックを提供していただければ、ソリューションは非常にうまく機能すると思います。 (入力の下または横のインジケーター、または入力された数値を太字/黒で表示し、入力されていない推定値を薄い灰色で表示することを考えることができます。)

また、実際のユーザーでフォーマットをテストして、混乱を招く、または明確であるか、あいまいさのない点に制限したいかを確認することをお勧めします。

(そして、時間が経つとそれがわかる前に2030になるため、固定された上限ではなく、柔軟な制限(たとえば、現在の年+ 20)を取得することを検討します。それが混乱しすぎると思う場合は、 2桁を受け入れないギャップ。ただし、これらの非常にまれなケースのみ。一般に、多くのことを処理する必要がある場合は、制限を厳しくしないでください。)

2
Inca

私は最良の解決策は次のようになると思います:

  • ユーザーが書き始めるとフィールドは空白になります
  • このようにして、誤解を避けることができます
  • そして、左から書いて書くので、最初の桁が1000を表すことは誰でも理解できるでしょう...
0