DateTimeValidator を使って、 ある値が妥当性検査の一連の制約に準拠しているかどうかを テストします。 バリデーターを使って、JavaScript の 日付オブジェクトのテストを行うこともできますし、 提供された DateTimeConverter によって 日付オブジェクトに変換された文字列のテストも 行うことができます (変換が失敗すると、その値は無効になります)。
バリデーターの構成時に、妥当性検査の制約を 指定します (Get/SetAttribute 呼び出しを使用して、 制約の追加/除去を行うこともできます)。 制約における数値を、すべて指定することができます。 制約を指定しないと、意味のある作業にはなりません。
制約として required を指定する場合 (かつ true に設定する場合)、 その値が非ヌルか (日付オブジェクトが提供されている場合)、 または空ではない文字列であること (文字列が指定されている場合) を、 バリデーターが要求します。 required が設定されない場合、 他のすべての制約に関係なく、 ヌル/空の文字列が有効な値と見なされます (つまり、 必須が設定されなければ、 「ヌル」は常に有効な値になります)。
制約として minimum-bound が指定された場合は、 対象となる値 (ヌルでない場合) が 指定された範囲以上である必要があります。 制約として maximum-bound が指定された場合は、 対象となる値は最大限の範囲以下である必要があります。
JavaScript EL 式を使用すると、値が設定範囲内にあるかどうか、 値が不連続な範囲内にあるかどうか、 などをテストすることができます。 現在のところ、ページ上のある値を別の値と比較するために 使用することはできません。
hX_5.addValidator("id", new hX_5.DateTimeValidator(attributes)); 各部の意味は次のとおりです。
id |
コンポーネントが付加される HTML タグの ID。 |
属性名 |
説明 |
---|---|
required |
required を指定した場合、 値をヌルや空ストリングにすることができなくなります。 required を指定しない場合、 値をヌルや空ストリングにすることができます。 また、他の検証制約はスキップされます。 |
minimum-bound |
最小許容値。 ここでの制約は、yyyyMMddHHmmssSSS という フォーマットにする必要があります。 この場合、末尾のコンポーネントは省略できます。 |
maximum-bound |
最大許容値。 ここでの制約は、yyyyMMddHHmmssSSS という フォーマットにする必要があります。 この場合、末尾のコンポーネントは省略できます。 |
constraint-expression |
満たす必要が
ある JavaScript EL 式。
JavaScript EL 式
は、JSF EL 式とほぼ同じですが、以下の違いがあります。
|
API 呼び出し |
説明 |
---|---|
boolean = validate(value, converter) |
値 (ストリングまたは 日付オブジェクトのいずれか) を検証します。 コンバーター・オブジェクト、またはコンバーターの ID のいずれかが必要です。 値が合格した場合は true が戻されます。 値が不合格の場合は false が戻され、lastError が設定されます。 |
string = lastError() |
変換が失敗すると、 失敗の理由をローカライズされたストリングとして戻します。 |
object = setAttribute(attribute) |
属性を設定します。 属性がすでに設定されたものである場合は、 その値を変更します。 |
string = getAttribute(attribute-name) |
属性の現行値を取得します。 |
DateTime コンバーターと同様に、 妥当性検査が可能な日付の 有効な範囲は、1582 年 10 月 15 日から 9999 年 12 月 31 日です。
入力フィールドの値の妥当性検査を行います。
// MMMM dd, yyyy のパターンでコンバーターを構成します hX.addConverter("AZ", new hX.DateTimeConverter("format:MMMM dd, yyyy", "strict:2", "base-2digit-span:30")); // フィールドが存在することと、日付がその月の 1 日または 15 日であることとをチェックする、バリデーターを構成します hX.addValidator("1Z", new hX.DateTimeValidator("required:true", "constraint-expression:(@testValue.day == 1 || @testValue.day == 15")); // 値の妥当性検査を行います var x = document.getElementById("form1:textA"); var v = hX.getValidatorById("1Z"); if (!v.validate(x.value, "AZ")) alert ("ERROR: " + v.lastError());