search cancel

CA Gen : ⼊⼒⽂字のチェック機能について(Web クライアント化)

book

Article ID: 134034

calendar_today

Updated On:

Products

Gen

Issue/Introduction

全角フィールドに半角文字が入力することが可能であり、なおかつデータベースへの登録も可能である。
全角、半角など入力文字のチェックが行われていないように見受けられる。

Environment

Release: COOL:Gen 6.0 eBusiness Edition

Resolution

Java におきましては全ての文字は UniCode として処理され、半角および全角の全ての文字が1文字として扱われます。
半角、全角などの概念がないため、各自で入力チェックを行っていただく必要があります。
(GUI の場合には、COOL:Gen のラインタイムにて入力文字および入力文字数 のチェックを行っております。)

[ 回避方法 ( サンプル ) ]
JavaScript を追加することにより、入力チェックを行うことは可能であります。
サンプルを以下に記述いたします。
以下のサンプルは、半角フィールドへの全角文字入力を抑止するものです。

<サンプル JavaScript>
<"SCRIPT LANGUAGE="JavaScript">
if (RC112value != "")
{
str = RC112value;
for (i=0; i<str.length; i++)
{
if (str.charCodeAt(i) > 256 ) alert("フィールドの値がTEXTではない");
}
}

<サンプル説明>
上記 RC112value はテキストフィールドであり、そのフィールドに文字が入力された際に、
その文字が半角であるか一文字づつチェックを行います。

a. str.charCodeAt を用いることにより、コードに変換しそれが半角のコードの範囲内 であるかを判別しています。
b. str.charCodeAt の詳細につきましては、JavaScript のリファレンスを参照ください。
通常半角はコード(8 ビット)に変換した際に、256 以内で表現されるとの考えをもとに上記では 256 を用いております。

またこのJavaScript を HTML ファイルのどの部分に追加するかが問題となります。
いろいろな場所が考えられますが、COOL:Gen において対象のフィールドに対する空の change イベントを作成し、
HTML ファイルで定義されたそのchange イベントの後にこのJavaScript を追加する方法が一つです。
HTML コントロールを用いることも考えられます。

また入力文字をチェックする他の方法として、アクション図にて対象のフィールドに対する change イベントを作成し、
そのイベントにおいて入力文字を一文字づつチェックする方法もございます。
この場合には、CAB としてそのアクション図を作成し、入力文字数を引数とすれば良いはずです。
サンプルを以下に記述いたします。
(このサンプルでは、文字数を明示的に5としております。)

<サンプル CAB>
+- EVENT ACTION test_ef_key001_changed
| += FOR local ief_supplied count FROM 1 TO 5 BY 1
| | +- IF substr(ex kokyaku key001, local ief_supplied count, 1) IS EQUAL TO SPACES
| | | EXIT STATE IS text_ok
| |<----NEXT
| | +--
| | +- IF substr(ex kokyaku key001, local ief_supplied count, 1) IS GREATER OR EQUAL TO "0"
| | | AND substr(ex kokyaku key001, local ief_supplied count, 1) IS LESS OR EQUAL TO "9"
| | | EXIT STATE IS text_ok
| |<----NEXT
| | +--
| | +- IF substr(ex kokyaku key001, local ief_supplied count, 1) IS GREATER OR EQUAL TO "A"
| | | AND substr(ex kokyaku key001, local ief_supplied count, 1) IS LESS OR EQUAL TO "Z"
| | | EXIT STATE IS text_ok
| |<----NEXT
| | +--
| | +- IF substr(ex kokyaku key001, local ief_supplied count, 1) IS GREATER OR EQUAL TO "a"
| | | AND substr(ex kokyaku key001, local ief_supplied count, 1) IS LESS OR EQUAL TO "z"
| | | EXIT STATE IS text_ok
| |<----NEXT
| | +--
| | EXIT STATE IS text_err
| | +- IF EXITSTATE IS EQUAL TO text_err
| | | MAKE ex kokyaku key001 ERROR
<---------ESCAPE
| | +--
| +--
| MAKE ex kokyaku key001 プロテクトされていない Normal 輝度 Normal 色

なお回避策につきましてはあくまでも一例ですので、弊社テクニカルサポートが 保証するものではございません。

 

Additional Information

Old Japanese Knowledge document ID: JTEC001713

CA Genのその他のFAQについては、以下のリンクからご確認ください。

CA Gen FAQ一覧表