web-dev-qa-db-ja.com

フィールド検証にはデフォルトのOS形式を使用する必要がありますか?

私は国際的なWebサービス(6言語)を使用しており、スマートフォンからインターネットカフェまで、あらゆるデバイスから毎日約1000人がアクセスしています。

表示される情報は、距離、金額、日付など、やや科学的なものであり、形式は、小数点と値の理解に影響を与える可能性があります。

時々 1.000,000(ドイツ語)は正しい、時々1,000.000(英語)が正しい。

さまざまな形式を許可する必要がありますが、ユーザーが1.000(ドイツ語のフォーマットでは1000個、英語のフォーマットでは1個)?

残念ながら、 'Do n't Make Me Think'はフォーマットについてあまり書いていません。提案されている唯一のことは、会社が間違った入力をしないように数式を空白のままにすることです。

質問:デバイスのフォーマットに依存すべきですか、それともユーザーがフォーマットを自分で選択できるようにする必要がありますか?

4
Peter Rader

入力に関して:ユーザーは本当に1000のセパレータを手動で入力する必要がありますか?いいえ(最も可能性の高いケース)の場合、両方を扱います.および,小数点としてフィールドに入力し、その値に対してその種類の記号を1つだけ許可します。

値の出力に関して:IMHO、デフォルトではOS形式に依存することをお勧めしますが、出力形式を変更し、そのオプションの可用性について微妙な手がかりを与える可能性を提供します。ツールチップ(title属性またはその他の手段による)、却下可能な情報メッセージ、またはその他の代替手段を使用できます。

2
elushnikova

これを解決する1つの方法は、人々に小数点を入力させないことです。数値以外の入力を拒否し、人々が単位(メートル、センチメートルなど)を選択できるようにします。

日付については、テキストボックスではなく日付ピッカーを使用してください。

ユーザーのロケール設定を使用するリスクは、分数入力の入力方法に関する情報を(たとえば、サポートフォーラム/ wikiで)共有している場合、一方の当事者はポイントを使用する必要があると書き込み、もう一方の当事者はコンマを使用する必要があると書き込みます。それらの両方を混乱させる。これが避けられない場合もありますが、10進数の入力を回避できる場合は回避してください。

1
Lie Ryan

C#とJavaScriptの両方に、数値形式を変換するためのいくつかの優れたツールがあります...ユーザーまたはサイトから国/言語のISOコードを取得できる場合(ドイツ語の場合は「de-DE」など)、これは簡単に行えます。 。

たとえばC#には、この目的のためのCultureInfoクラスがあります...

  1. ユーザーがサイトにアクセスする(例: "/ de-DE /"がURLのどこかにある)
  2. ユーザーは自分の値を自分の形式で入力します
  3. その後、計算/保存用に希望の番号形式に変換できます。
  4. 結果がユーザーに送り返される前に、値はたとえばに変換されます。ドイツの番号形式。

そうすれば、ユーザーがどのカルチャーから来たのかを検出できますが、ストレージと計算にどのフォーマットを使用するかは自由に決定できます。

ほぼすべての言語には、組み込みまたは拡張機能として利用可能な数値形式変換の形式があります。

ユーザーのOSを使用して数値をフォーマットするか、サーバーを使用するかは、主にニーズによって異なります。

OS設定の使用

  • クライアントアプリで簡単に実行できますが、ブラウザーでOS設定を取得するのが難しくなる場合があります。 (サポートするブラウザの種類ごとにコードを記述する必要があります)

  • 出力は場所に関係なくユーザーの好みに合わせてフォーマットされます

  • クライアントのマシンのリソースを使用します

サーバーの使用

  • ブラウザで安全に行うのが簡単

  • 簡単に拡張して、必要に応じてユーザーが番号付け形式を選択できるようにすることができます

  • ユーザー設定や情報を送信する必要はありません

    • 多数のブラウザーでコーディングが容易

    • 変換と計算にサーバーのリソースを使用します

1
user82740

入力側では、桁区切り記号を残し、現在のユーザーの言語設定に基づいて数値と小数点記号のみを許可しますが、値を次のように統一して格納します。

  • 1000.0(1000として)を許可し、1000.0として保存
  • 1000,0(1000として)を許可し、1000.0として保存

出力側では、再び言語設定に依存できます。そしてユーザーが選択したようにセパレーターを変更できます。

このアプローチでは、入力した値を均一に保存し、ユーザーが表示形式を選択できるようにします(言語設定を使用)。

これは、日付を含むすべての種類の入力で正常に機能します。

0
ropiafoldetnezi