第 7 章 JSVRAX の運用
7.4 業務アプリケーション側で入力抑止をする
「7.1 外字の入力表示および内字の字形統一をする」で説明したTextarea HTCを使用してください。
7.4 業務アプリケーション側で入力抑止をする
入力部品を使用せず、アプリケーション独自に値をチェックし、入力抑止をしたい場合に使用できます。
◆要件例
・ 入力抑止はしたいが、運用中の業務アプリの改修やオペレータへの影響を考慮すると、すぐにTextarea HTCやInputValidator HTC を適用するのは困難。
・ Textarea HTCやInputValidator HTCによる入力抑止(入力不可文字の自動補正)は行いたくない。アプリケーションで、値をチェッ
クすることで抑止したい。
・ 文字入力以外のタイミングにおいて、システムで使用できない文字を抑止したい。
◆使用する主な
JSVRAXの機能
JSVRAX.Utility◆業務アプリケーションへの組み込み方
1. 文字処理定義を作成するここでは、文字処理定義ファイルサンプルの中から、「マイクロソフトのシフトJIS文字セット」に相当するものを使用します。
Unicode_MS932_m_s.js var Unicode_MS932_m_s = [
{init:"0", def:"000000000000000000000000000...}, {init:"3"},
・
・
・ ];
2. JSVRAX.Utility.CharBehavior.Parserクラスを使用し、ハンドラ内で文字をチェックする 次のようになります。
<html xmlns:JSVRAX> <!-- 「JSVRAX」というnamespace を宣言 -->
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- 文字処理定義ファイルをインクルードする -->
<script src="Unicode_MS932_m_s.js"></script>
<!-- JSVRAXの環境設定 Environment HTCをインポートする -->
<?import namespace="JSVRAX" implementation="/JSVRAX/Environment.htc">
<!-- JSVRAXの環境を設定する -->
<JSVRAX:environment />
<script>
// UCS4コード値を文字化する関数 function toCharacter( charCode ) { if( charCode < 0x10000 )
return String.fromCharCode(charCode);
else
return String.fromCharCode(0xd800+(((charCode-0x10000)>>10)&0x3FF)) + String.fromCharCode(0xdc00+(charCode&0x3FF));
}
// 解析ハンドラを定義
function checkHandler( parser, code, charBehav ) { if( charBehav.isInvalid() ) {
// 入力不可文字があった場合、メッセージを表示して終了 alert("「"+toCharacter(code)+"」は使用できません。");
return false;
} }
// 値をチェックする関数 function checkValue() { // 解析する文字列の取り出し
var targetString = document.getElementsByName("ipt")[0].value;
// JSVRAXの文字列解析クラスのインスタンスを生成
var parser = new JSVRAX.Utility.CharBehavior.Parser( targetString, Unicode_MS932_m_s, checkHandler );
// 解析実行 parser.parse();
} </script>
</head>
<body>
<!-- 入力フォーム -->
<form action="" >
<input id="ipt" value="森?外"> <!--「?」はシフトJISで表現できない文字 -->
<!-- ボタンが押されたら、値をチェックする -->
<input type="button" value="check it now!" onclick="checkValue()">
</form>
</body>
</html>
参考
・ 純粋なロジックであり、GUI要素はありません。すでに運用中のシステムに対しても、アプリの改修やオペレータの再教育などの影 響を最小限に抑え、組み込むことができます。
・ ほとんどの場合、文字処理定義のサンプルをそのまま使用することができます。詳しくは「4.5 JSVRAXの文字処理定義のサンプ ル」を参照してください。
・ 使用できる文字を変更したい場合は、文字処理定義をカスタマイズし使用してください。詳しくは、「コマンドリファレンス」の8.10.2 項を参照してください。