2009-04-14 12 views
0

提出時にHTMLフォームフィールドの内容を再フォーマットしたいとします。入力フィールドの再フォーマット

たとえば、ユーザーは「1.234,56」(このロケールの数値には有効な形式です)を入力しますが、値「1234.56」をサーバーに送信します。

私はこのことに関して他の人々の経験について聞きたいと思います。これどうやってやるの?

私の最初の考えは、コンテンツを再フォーマットするonSubmitイベントです。しかし、誰もこれに関する実装の経験がありますか?

それとも良いアイデアですか?


JavaScriptは常に利用可能です。 Dojoのほうがずっと簡単なら、私はそれを使うことができます。

そして、実際にはもう少し複雑です。私も「ぼかし」で再フォーマットしたいからです。ユーザーは「1234,56」(入力形式)と入力します。フォーカスが変更されると、 "1.234,56"(表示形式)に再フォーマットする必要があります。しかし、サーバーに送信される実際の値は "1234.56"(マシン形式)である必要があります。
入力フォーマットと表示フォーマットの間の変換は簡単ですが、多分これをいくつかの賢い方法で組み合わせることができます。


EDIT:Javascriptのに応じて、同様の意見は関係ありませんので、これは、公共のウェブサイトのためではありません。

答えて

1

まあ、考えられるのは、Javascriptを排他的に使用し、実際に入力した値を隠しフィールドに格納することです。次に、テキストボックスのonBlur Javascriptイベントをトラップして、必要に応じて値をフォーマットする関数を呼び出します。

最後に、フォーム提出時に、テキストボックスではなく、隠しフィールドにある値にアクセスします。

+0

私はこれも考えました。しかし、これは入力データのサイズを2倍にする可能性があります。これも処理することはできますが、あまり実用的ではありません。 – myplacedk

0

あなたが質問したやり方は、基本的にクライアント側で検証することです。これはどのような状況でも行われません。ロケール固有の処理を使用して、番号を送信してサーバー側で検証してください。あなたが即座にフィードバックをしたいのであれば、AJAXを使用しますが、検証サーバ側では、AJAXリクエストでonBlur()を実行できます。情報が与えられ

+0

私はクライアント側の検証が悪いことに同意しません。サーバサイド検証の欠落は悪いことですが、それは別の話です。 (AJAXはまだサーバーに接続していますが、無駄です) この場合、クライアント側でフォーマットするのは非常に実用的です。 – myplacedk

1

は、私はおそらく次の操作を行います:

ぼかしハンドラ

  1. が入力
  2. 検証に入力を取得する必要があります - それは数ありますか?それは範囲内ですか?
  3. 標準化された形式に変換して表示します(1。
  4. 同上 -

    1. 入力
    2. 検証に入力を取得する必要がハンドラを送信する正規化された形式

    に、フォームの[入力]の値を設定し234,56)

  5. ロケール固有の値から、サーバー上で必要な値に変換します。
  6. フォームの[入力]の値を変換された値に設定します。
  7. フォームを送信してください。

クライアント側の検証の程度に関係なく、サーバー側の検証を行う必要があります。しかし私はJavascriptで多くのバリデーションを行いますが、私は、ユーザーに自分のフォーム値がサーバーに最初になくても失敗することを知らせることを好むため、私は立つことができます。

さらに、多くのロケールの金額を処理できるようにサーバー側のアクションを変更することになります。それはJavascriptのサブミットハンドラにもっと多くの揺れの部屋を与えます。

関連する問題