ColdFusion MX
目 次 > ColdFusion MX アプリケーションの開発 > データの取り出しと形式設定 > フォームフィールドのデータタイプの検証 O

フォームフィールドのデータタイプの検証

HTML フォームの難点の 1 つは、ユーザーが入力するデータのタイプや範囲の妥当性を検証できないことです。ColdFusion では、フォームに非表示フィールドを追加することによって、いくつかのタイプのデータを検証できます。

次の表に、検証に使用できる非表示フィールドの接尾辞を示します。

フィールド接尾辞

値の属性

説明

_integer

カスタムエラーメッセージ

ユーザーが数値を入力したことを検証します。ユーザーが浮動小数点値を入力すると、その値は整数に四捨五入されます。$、¤、¥、£、+、~ などの文字は有効な入力として扱いますが、数値からは削除します。

_float

カスタムエラーメッセージ

ユーザーが数値を入力したことを検証します。浮動小数点値の四捨五入を行いません。$、¤、¥、£、+、~ などの文字は有効な入力として扱いますが、数値からは削除します。

_range

MIN=最小値

MAX=最大値

入力された数値が、指定された境界値内にあることを検証します。片方の境界値を指定することも、スペースで区切って両方の境界値を指定することもできます。

_date

カスタムエラーメッセージ

日付が入力されたことを検証し、その日付を適切な ODBC 日付形式に変換します。日付形式としては、
9/1/98 や Sept. 9, 1998 など、多くの一般的な形式を受け付けます。

_time

カスタムエラーメッセージ

時刻が正しく入力されたことを検証し、その時刻を適切な ODBC 時刻形式に変換します。

_eurodate

カスタムエラーメッセージ

日付が標準ヨーロッパ日付形式で入力されたことを検証し、その日付を適切な ODBC 日付形式に変換します。

メモ: フィールドに検証ルールを追加しても、そのフィールドは必須フィールドになりません。ユーザーに確実に入力させるには、別の _required 非表示フィールドを追加する必要があります。

次の手順によって、開始日および給与を入力する簡単なフォームを作成できます。非表示フィールドを使用して、常にデータが正しい形式で入力されるようにします。

この例では、少々変わったコンセプトが取り入れられています。それは、同一の ColdFusion ページをフォームページとアクションページの両方として使用するということです。入力される 2 つの変数の値はアクションページでのみ表示されるため、このアクションページがフォームと同じページに表示されます。

1 つのページをフォームとアクションの両方に使用することにより、データが存在するかどうかを確認するために、IsDefined 関数を使用できます。このようにすれば、入力データを送信しないかぎり、フォームにはどのような結果も表示されません。

挿入フォームにユーザーが入力するデータを検証するには :

  1. 次のテキストを使用して新規ページを作成します。
    <html>
    <head>
       <title>簡単なデータフォーム</title>
    </head>
    <body>
    <h2>簡単なデータフォーム</h2>
    
    <!--- フォームパート --->
    <form action="datatest.cfm" method="Post">
       <input type="hidden"
          name="StartDate_required"
          value="開始日を入力してください。">
       <input type="hidden"
          name="StartDate_date"
          value="開始日を正しく入力してください。">
       <input type="hidden"
          name="Salary_required"
          value="給与を入力してください。">
       <input type="hidden"
          name="Salary_float"
          value="給与は数値で入力してください。">
       開始日 : 
       <input type="text"
          name="StartDate" size="16"
          maxlength="16"><br>
       給与 : 
       <input type="text"
          name="Salary"
          size="10"
          maxlength="10"><br>
       <input type="Reset"
          name="ResetForm" 
          value="フォームのクリア">
       <input type="submit"
          name="SubmitForm" 
          value="データの挿入">
    </form>
    <br>
    
    <!--- アクションパート --->
    <cfif isdefined("Form.StartDate")>
       <cfoutput>
          開始日 : #DateFormat(Form.StartDate)#<br>
          給与 : #DollarFormat(Form.Salary)#
       </cfoutput>
    </cfif>
    </html>
    
  2. このファイルに datatest.cfm という名前を付けて保存します。
  3. ファイルをブラウザに表示し、フィールドを空欄のままにするか、または有効でないデータを入力して [送信] ボタンをクリックします。

フォームが送信されると、ColdFusion はフォームフィールドを走査し、指定された検証ルールを検索します。そのルールを使用して、ユーザーの入力を分析します。入力ルールに違反していると、ColdFusion は、その問題について説明するエラーメッセージをユーザーに送ります。ユーザーは、フォームの画面に戻って問題を訂正し、再送信する必要があります。ColdFusion では、ユーザーが正しく入力するまでフォームの送信が受け付けられません。

数値にはカンマやドル記号が含まれていることが多いので、これらの文字は、フォームフィールドが検証されてデータがそのフォームのアクションページに渡される前に、_integer_float、または _range ルールを含んでいるフィールドから自動的に削除されます。

コードの確認

次の表で、前述のコードについて説明します。

コード

説明

<form action="datatest.cfm"
   method="post">

post メソッドを使用してこのフォームから情報を収集し、アクションページでもあるこのページ上で、その情報に何らかの処理をします。

<input type="hidden"
   name="StartDate_required"
   value="開始日を入力してください。">
<input type="hidden"
   name="StartDate_date"
   value="開始日を正しく入力してください。">

"開始日" 入力フィールドへの入力を必須化します。入力がない場合は、"開始日を入力してください。" というエラーメッセージが表示されます。また、有効な日付形式での入力を必須化します。有効な形式で入力されていないと、"開始日を正しく入力してください。" というエラーメッセージが表示されます。

<input type="hidden"
   name="Salary_required"
   value="給与を入力してください。">
<input type="hidden"
   name="Salary_float"
   value="給与は数値で入力してください。">

"給与" 入力フィールドへの入力を必須化します。入力がない場合は、"給与を入力してください。" というエラーメッセージが表示されます。また、有効な数値での入力を必須化します。入力が有効な形式で入力されていないと、"給与は数値で入力してください。" というエラーメッセージが表示されます。

開始日 : 
<input type="text"
   name="StartDate" size="16"
   maxlength="16"><br>

ユーザーが開始日を入力する "開始日" というテキストボックスを作成します。テキストボックスの幅を 16 文字に設定します。

給与 :  
<input type="text"
   name="Salary"
   size="10"
   maxlength="10"><br>

ユーザーが給与を入力する "給与" というテキストボックスを作成します。テキストボックスの幅を 10 桁に設定します。

<cfif isdefined("Form.StartDate")>
   <cfoutput>
      開始日 : 
#DateFormat(Form.StartDate)#<br> 給与 :
#DollarFormat(Form.Salary)# </cfoutput> </cfif>

"StartDate" および "Salary" フォームフィールドの数値を、それらが定義されている場合にのみ表示します。これらはフォームが送信されるまでは定義されないため、最初のフォームでは表示されません。開始日をデフォルトの日付形式で表示するには、DateFormat 関数を使用します。給与をドル記号とカンマを用いて表示するには、DollarFormat 関数を使用します。



目 次 > ColdFusion MX アプリケーションの開発 > データの取り出しと形式設定 > フォームフィールドのデータタイプの検証 O