[]
検証コントロールが提供する6つの検証規則について解説します。
コントロールに値が入力されているかどうかを検証するには、既定の検証規則の必須入力を使用できます。値が空の場合は検証に失敗します。
ruleプロパティにValidateType.Requiredを指定すると必須入力チェックを行います。次のサンプルコードは、テキストコントロールに対して必須入力チェックを設定する例です。
var GcValidator1 = new GC.InputMan.GcValidator({
items: [
{
control: gcTextBox1,
ruleSet: [
{
// 検証規則を「必須入力」とする
rule: GC.InputMan.ValidateType.Required
}
],
validateWhen: GC.InputMan.ValidateWhen.Typing,
notify:
{
tip:true
}
}
]
});コントロールの値が最大値と最小値の範囲内に収まっているかどうか検証するには、既定の検証規則の入力範囲を使用できます。範囲外の値が入力された場合は検証に失敗します。
ruleプロパティにValidateType.OutOfRangeを指定すると必須入力チェックを行います。なお、OutOfRangeが有効に動作する入力コントロールは、最大値と最小値を設定可能なコントロール(GcNumber、GcDateTime)のみとなります。また、検証対象コントロールのmaxMinBehaviorプロパティはKeepに設定されている必要があります。
次のサンプルコードは、日付時刻コントロールに対して範囲チェックを設定する例です。
// 日付時刻コントロール
var gcDateTime1 = new GC.InputMan.GcDateTime(document.getElementById('gcDateTime1'));
gcDateTime1.setDisplayFormatPattern('yyyy年M月d日');
gcDateTime1.setFormatPattern('yyyy年M月d日');
gcDateTime1.setValue(new Date(2018, 9, 31));
gcDateTime1.setMinDate(new Date(2018, 0, 1));
gcDateTime1.setMaxDate(new Date(2018, 11, 31));
gcDateTime1.setMaxMinBehavior(GC.InputMan.MaxMinBehavior.Keep);
// 検証コントロール
var GcValidator1 = new GC.InputMan.GcValidator({
items: [
{
control: gcDateTime1,
ruleSet: [
{
// 検証規則を「範囲チェック」とする
rule: GC.InputMan.ValidateType.OutOfRange,
failMessage: '日付が範囲外です'
}
],
notify:
{
tip:true
}
}
]
});コントロールに入力値の長さが設定条件に満たすかどうかを検証するには、入力文字数チェックを使用できます。設定した文字数の条件に満たしていない場合は検証に失敗します。この検証規則が有効に動作する入力コントロールは以下の通りです。
コントロール | 検証 |
|---|---|
GcTextBox | 編集状態のテキストを検証します。 |
GcMultiLineTextBox | 編集状態のテキストを検証します。 |
GcMask | 編集状態のテキストを検証しますが、リテラル(例: “____”)は除外します。 |
GcComboBox | 編集状態のテキストを検証します。 |
GcRichTextEditor | 編集状態のテキストを検証します。 |
ValidateType列挙型に以下のメンバーが追加されました。
検証規則 | 説明 | 必要パラメータ |
|---|---|---|
EqualToInputLength | 設定の文字数と一致するかどうかをチェック | inputLength |
LessThanInputLength | 設定した文字数に未満かどうかをチェック | inputLength |
LessThanOrEqualToInputLength | 設定した文字数以下かどうかをチェック | inputLength |
GreaterThanInputLength | 設定した文字数に超過かどうかをチェック | inputLength |
GreaterThanOrEqualToInputLength | 設定した文字数以上かどうかをチェック | inputLength |
BetweenMinAndMaxLength | 設定した最低文字数を超過、最大文字数に未満かどうかをチェック | inputMinLength、inputMaxLength |
BetweenOrEqualToMinAndMaxLength | 設定した最低文字数以上、最大文字数以下かどうかをチェック | inputMinLength、inputMaxLength |
次のサンプルコードでは、テキストコントロールが5文字未満かどうかの検証方法を示します。
// テキストコントロール
const gcTextBox1 = new GC.InputMan.GcTextBox(document.getElementById('gcTextBox1'),{
text: 'あいうえお',
});
// 検証コントロール
var GcValidator1 = new GC.InputMan.GcValidator({
items: [
{
control: gcTextBox1,
ruleSet: [
{
// 検証規則を「入力文字数未満チェック」とする
rule: GC.InputMan.ValidateType.LessThanInputLength,
inputLength: 5, // 文字数を指定する
failMessage: '5文字未満に入力してください',
},
],
validateWhen: GC.InputMan.ValidateWhen.Typing,
}
]
});コントロールに入力した値が他のコントロールの値と一致するかどうかを検証するには、他のコントロールと照合チェックを使用できます。値が一致しない場合は検証に失敗します。この検証規則が有効に動作する入力コントロールと検証時に比較するプロパティは以下の通りです。
コントロール | 比較するプロパティ |
|---|---|
GcTextBox | text |
GcMultiLineTextBox | text |
GcMask | value |
GcDateTime | value |
GcNumber | value |
GcComboBox | text |
GcRichTextEditor | text |
ruleプロパティにValidateType.MatchControlを指定し、matchControlプロパティで他のコントロールを設定すると、両コントロールの値を比較します。
次のサンプルコードは、パスワードとパスワード確認用の2つのテキストコントロールを照合する例です。
// テキストコントロール
const gcTextBox1 = new InputMan.GcTextBox(document.getElementById('gcTextBox1'),{
useSystemPasswordChar: true,
});
const gcTextBox2 = new InputMan.GcTextBox(document.getElementById('gcTextBox2'),{
useSystemPasswordChar: true,
});
// 検証コントロール
var GcValidator1 = new GC.InputMan.GcValidator({
items: [
{
control: gcTextBox2,
ruleSet: [
{
// 検証規則を「他のコントロールと照合」とする
rule: InputMan.ValidateType.MatchControl,
matchControl: gcTextBox1,
failMessage: 'パスワードが一致しません。',
}
],
validateWhen: GC.InputMan.ValidateWhen.Typing,
notify:
{
tip:true
}
}
]
});何らかのチェック処理を行って結果で判定して検証通知を表示したい場合、外部検証結果の指定を使用できます。
ruleプロパティにValidateType.Externalを指定し、validateメソッドでBoolean型のパラメータで検証成功または失敗を設定できます。
次のサンプルコードは、ラジオボタンのtrue/falseを切り替えることで、テキストコントロールに検証結果を適用する例です。
const gcTextBox1 = new GC.InputMan.GcTextBox(document.getElementById('gcTextBox1'));
const validator1 = new GC.InputMan.GcValidator({
items: [
{
control: gcTextBox1,
ruleSet: [
{
rule: GC.InputMan.ValidateType.External, //外部検証結果で検証する
failMessage: `外部検証が失敗しました。`
}
],
validateWhen: GC.InputMan.ValidateWhen.Manual
}
],
validateWhen: GC.InputMan.ValidateWhen.Manual,
notify:
{
tip:true
}
});
document.querySelectorAll('input[name="validatorGroup"]').forEach(radio => {
radio.addEventListener('change', function () {
//boolean型のパラメータで検証
validator1.validate(gcTextBox1, this.value === 'true');
});
});検証コントロールでは、独自の検証ロジックを設定することが可能です。
次のサンプルコードは、入力された値が偶数かどうかをチェックするロジックを以下のようにruleSet.ruleプロパティに直接設定する例です。(以下のコードは抜粋です)
var validator = new GC.InputMan.GcValidator({
items: [
{
control: gcNumber3,
ruleSet: [
{
// 独自の検証ロジックを使用
rule: function (control) {
return control.getValue() % 2 == 0;
},
failMessage: function (control, context) {
return '偶数を入力してください。奇数' + control.getValue() + 'が入力されました。';
}
}
]
}
],
defaultNotify: {
tip: true
}
});また、registerValidateRuleメソッドで検証ロジックをあらかじめ登録し、そのロジック名をruleプロパティに設定する方法も提供しています。たとえば、以下のようなコードになります。
// 独自の検証ロジックの登録
GC.InputMan.GcValidator.registerValidateRule('chkEven', function (control, context) {
var value = control.getValue();
if (value === undefined || value === null) {
return undefined;
}
return value % 2 == 0;
});
// 検証コントロール(抜粋)
var validator = new GC.InputMan.GcValidator({
items: [
{
control: gcNumber3,
ruleSet: [
{
// あらかじめ登録した検証ロジックを使用
rule: "chkEven",
failMessage: function (control, context) {
return '偶数を入力してください。奇数' + control.getValue() + 'が入力されました。';
}
}
]
},
],
defaultNotify: {
tip: true
}
});