レイアウトを変更せずに小数値を入力します

プログラム/ Webサービスのインターフェースに小数値を入力する頻度はどのくらいですか? 場合によっては、おそらく、そのようなフィールドの不適切な動作に直面したでしょう。 たとえば、私は定期的に絶対に愚かなフォームについて額を打ちました。 分数値を入力すると白熱が発生する理由と、それをどうするかを知りたいですか? 猫へようこそ。



私の観察によると、それらの動作の次のアルゴリズムが最も頻繁に見つかります。







一般に、XXI世紀の中庭ではインターフェイスが開発されており、小数値を入力するなどの些細なアクションは依然としてユーザーの頭痛の種です。 数年前、私は小さなプログラムを設計(および部分的にコーディング)する機会がありました。 当然、上記の動作を繰り返したくありませんでした。 いくつかの考えの結果、かなり単純なアルゴリズムが生まれました。



それでは、小数をどうするか? まず、入力をフィルタリングする必要があります。 フォームの送信時に確認するのは良いことですが、スクリプトの横からキックした後ではなく、最初に値を入力できる方がユーザーにとってははるかに便利です。 このようなフィルターの私のバージョンは次のとおりです。



  1. 0〜9の数字を入力できます。
  2. 任意のレイアウトで可能な小数点区切り文字を含むボタンを押すと、キーボードから送信された文字を入力フィールドの正しい小数点区切り文字に置き換える必要があります。
  3. 複数の小数点記号を入力する試みをブロックします。
  4. 入力データのタイプに応じて、入力数の小数部分の文字数を制限します。


例1.ロシア語のレイアウトのユーザーは、キー[1] [2] [3] [b] [4] [5]を順番に押します。 入力フィールドの結果: 123.45





例2.英語レイアウトのユーザーがキー[1] [2] [3] [Shift +?] [4] [5]を順番に押します。 入力フィールドの結果: 123.45





このアルゴリズムの結果は、優れた(すごい)効果をもたらします。 ユーザーはレイアウトについて考える必要がなくなり、Shiftキーを押しながら、プログラマーが小数点またはコンマを使用したかどうかを推測します。 ライブユーザーの実験では、そのような「スマート」な入力フィールドで1〜2週間作業した後、通常のフィールドに戻ると、キーボードが壊れてプログラマー殺すという欲求が生じることが示されました。



PS。 正直なところ、このアルゴリズムは非常に単純なので、このアプローチが1回または2回以上使用されたことは146%確信しています。 しかし、未知の理由で、それは広く分布しませんでした(あなたが私を信じないなら、最も近い入力フィールドを見つけて、その動作を確認してください-私が引用した「正しい」アルゴリズムではなく、3つの「不器用な」アルゴリズムのいずれかに適合することはほぼ確実です)。



PPS DelphiまたはLazarusで書く人のために、対応する言語でこのアルゴリズムを実装するCurrencyEditコンポーネントへのリンクを提供します: GitHub



PPPS それぞれのプログラムの作者に敬意を払って特定の例を挙げているわけではありません。 Habrの読者のいずれかが自分のコードで「誤った」アルゴリズムを見つけ、それらを「正しい」アルゴリズムに変更することに決めた場合、ユーザーからの感謝が保証されます。



PPPPS どういうわけか私は完全に主題ではありません:HTMLフォームでは、原則として入力をフィルターできますか?



All Articles