| ColdFusion MX | ||
| 目 次 > ColdFusion MX アプリケーションの開発 > データの取り出しと形式設定 > フォームフィールドのデータタイプの検証 |
|
|
|
|
||
HTML フォームの難点の 1 つは、ユーザーが入力するデータのタイプや範囲の妥当性を検証できないことです。ColdFusion では、フォームに非表示フィールドを追加することによって、いくつかのタイプのデータを検証できます。
次の表に、検証に使用できる非表示フィールドの接尾辞を示します。
フィールド接尾辞 |
値の属性 |
説明 |
|---|---|---|
_integer |
カスタムエラーメッセージ |
ユーザーが数値を入力したことを検証します。ユーザーが浮動小数点値を入力すると、その値は整数に四捨五入されます。$、¤、¥、£、+、~ などの文字は有効な入力として扱いますが、数値からは削除します。 |
_float |
カスタムエラーメッセージ |
ユーザーが数値を入力したことを検証します。浮動小数点値の四捨五入を行いません。$、¤、¥、£、+、~ などの文字は有効な入力として扱いますが、数値からは削除します。 |
_range |
MIN=最小値 MAX=最大値 |
入力された数値が、指定された境界値内にあることを検証します。片方の境界値を指定することも、スペースで区切って両方の境界値を指定することもできます。 |
_date |
カスタムエラーメッセージ |
日付が入力されたことを検証し、その日付を適切な ODBC 日付形式に変換します。日付形式としては、 |
_time |
カスタムエラーメッセージ |
時刻が正しく入力されたことを検証し、その時刻を適切な ODBC 時刻形式に変換します。 |
_eurodate |
カスタムエラーメッセージ |
日付が標準ヨーロッパ日付形式で入力されたことを検証し、その日付を適切な ODBC 日付形式に変換します。 |
メモ: フィールドに検証ルールを追加しても、そのフィールドは必須フィールドになりません。ユーザーに確実に入力させるには、別の _required 非表示フィールドを追加する必要があります。
次の手順によって、開始日および給与を入力する簡単なフォームを作成できます。非表示フィールドを使用して、常にデータが正しい形式で入力されるようにします。
この例では、少々変わったコンセプトが取り入れられています。それは、同一の ColdFusion ページをフォームページとアクションページの両方として使用するということです。入力される 2 つの変数の値はアクションページでのみ表示されるため、このアクションページがフォームと同じページに表示されます。
1 つのページをフォームとアクションの両方に使用することにより、データが存在するかどうかを確認するために、IsDefined 関数を使用できます。このようにすれば、入力データを送信しないかぎり、フォームにはどのような結果も表示されません。
<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>
フォームが送信されると、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>
開始日 : |
"StartDate" および "Salary" フォームフィールドの数値を、それらが定義されている場合にのみ表示します。これらはフォームが送信されるまでは定義されないため、最初のフォームでは表示されません。開始日をデフォルトの日付形式で表示するには、 |
|
|
||
| 目 次 > ColdFusion MX アプリケーションの開発 > データの取り出しと形式設定 > フォームフィールドのデータタイプの検証 |
|
|