◆要件例
入力抑止はしたいが、運用中の業務アプリの改修やオペレータへの影響を考慮すると、すぐにTextarea HTCやInputValidator HTCを適用するのは困難。
Textarea HTCやInputValidator HTCによる入力抑止(入力不可文字の自動補正)は行いたくない。アプリケーションで、値をチェックすることで抑止したい。
文字入力以外のタイミングにおいて、システムで使用できない文字を抑止したい。
◆使用する主なJSVRAXの機能
◆業務アプリケーションへの組み込み方
ここでは、文字処理定義ファイルサンプルの中から、「マイクロソフトのシフトJIS文字セット」に相当するものを使用します。
Unicode_MS932_m_s.js
var Unicode_MS932_m_s = [ {init:"0", def:"000000000000000000000000000...}, {init:"3"}, ・ ・ ・ ];
次のようになります。
<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.4 JSVRAXの文字処理定義のサンプル」を参照してください。
使用できる文字を変更したい場合は、文字処理定義をカスタマイズし使用してください。詳しくは、「コマンドリファレンス JSVR部品 JSVR-Webサービス JSVRAX編」の8.10.2項を参照してください。