マスク支援

MaskAssist によって、 マスク文字列を含む入力フィールドの キーボード対話およびマウス対話を管理します。

これらのオブジェクトは、一般的な方法では使用できません (ユーザーはオブジェクトを作成して使用することはできません)。代わりに、これらのオブジェクトは入力支援の振る舞いによって作成されます。

マスク文字列を含む入力フィールドに マスク支援が適用されたときに、 キー・ストローク、マウス対話、 およびクリップボード対話を処理する方法の概略を、 以下で説明します。

ぼかし/フォーカス対話

フィールドがフォーカスを受信したとき、 空白 (空白が許可された値になっている位置も含む) である すべてのマーカー位置、および無効な文字があるすべての位置に、 プロンプト文字が挿入されます。 例えば、マスクが「#-@@@@」、 値が「A」、プロンプト文字が「*」であるとすると、 その値は「A-****」となります。 値内で保護されている文字は、そのまま残ります。 値において、ユーザーが入力可能な最初の文字位置に、 フォーカスが設定されます。

フィールドがフォーカスを失うと、 プロンプト文字はフィールドから除去されます。 無効の状態で残される場合もあります。

フォーカス/ぼかし処理の振る舞いは、JWL 2.1 から 変更されていますので、注意してください。 onBlur によって、フィールド内に不完全な値を残しておくことが 可能です (例えば、マスクが ###-##-#### の場合、 ユーザーが 151 を入力してから タブを押すと、151 はフィールド内に残ります)。 v2.1 より前のバージョンでは、 ユーザーがフィールドに戻ると (onFocus が発生し)、 値がクリアされていました (値が無効になるように)。 v2.1 以降は、値はクリアされなくなりました。 このように振る舞いの変更は 起こっていますが、(不完全な値において) onBlur が発生するときに、 フィールドに「無効 (invalid)」の マークが付けられるという事実は変わりませんので、 注意してください。

キー・ストローク対話

英数字キーが押されると (つまり、keypress イベントが生成されると)、 その位置がキー値を許容している (カーソルが入力位置にあり、 キー値が正規表現テストに合格している) 場合、 カーソル位置にある文字 (またはプロンプト文字) が 上書きされるか、または選択した中での最初の文字が 上書きされます (残りの文字はプロンプト文字に設定されます)。 この後、ユーザーが入力可能な次の位置 (またはフィールドの最後) に、 カーソルが進みます。 無効なキーが押されても、「何も起こりません」。 ユーザーが有効な「スペース」文字を入力した 場合 (すなわち、その位置でスペース文字が 許容されている場合)、スペースの代わりに プロンプト文字が表示されますので、注意してください。

制御キーが押される (つまり、 キー・コードで指示されている制御キーによって、キーダウン・イベントが 生成される) と、MaskAssist はキーダウン・イベント上で 制御キーを処理します (これは Windows® で 標準です)。 制御キーが右矢印の場合、 文字列内において入力が可能な次の位置へ、カーソルが進みます。 左矢印が押された場合、 入力が可能な位置のすぐあとに、カーソルが 「戻されます」(したがって、再び左矢印が押されるまで 入力ができなくなる場合があります -- 左矢印をもう一度押すと、 バックスペース・キーが使える位置に、カーソルを置くことができます)。 Del キーが押されると、 カーソル位置の後ろにある文字 (複数の文字が選択されていれば、 その選択箇所) が削除され、カーソルが進みます。 バックスペース・キーが押されると、 カーソル位置の前にある文字が削除され、カーソルは戻ります。 タブまたは Enter が押されると、 アクションを処理する通常フォームが実行されます。 これ以外に、特殊な処理が行われる 制御キーはありません (例えば、HOME および END については、 特殊な処理は行われず、予想されるとおりに機能します)。

マウス対話

ユーザーがフィールド内をクリックした (そのクリックによって、 何らかの選択が行われない) 場合、 ユーザーが入力可能な「次の」文字の前に、カーソルが置かれます。

クリップボード対話

切り取り/コピー/貼り付けにおける、 それぞれの相互作用は IE 内でのみ 処理され (Mozilla ではサポートしていません)、IE 内のみに 制限されたサポートが提供されます (相互作用を 管理するためのイベントの完全なセットは提供されますが、IE では クリップボードそのものに対するアクセスが制限されるため、 行える作業にも制約があります)。

コピー作業によって、 選択した箇所をクリップボードの <verbatim> タグにコピーします。 切り取り作業も、ほぼ同様の内容になりますが、 選択した箇所をクリアする (すべての入力位置を空白に設定する) 点が 異なります。 貼り付け作業の場合、 クリップボード上の値がマスク文字列であると見なされれば、 「入力できる」文字 (非リテラル文字) のみが貼り付けられ、 それ以外の場合は文字列全体が貼り付けられます。 この貼り付け作業は、「入力」位置に対してのみ 文字を適用します (リテラルをスキップします)。 任意の文字の入力に関する妥当性検査が失敗した場合、 貼り付け作業全体がキャンセルされます。 検査が成功した場合は、 貼り付けられた文字の最後にカーソルが置かれます (ただし、 ブラウザーによって カーソル位置が移動させられてしまう場合もあります)。

制限

MaskAssist の場合、IME を使用して形成された DBCS 文字は処理しません。 IME の使用中、ブラウザーでの キーボード・イベント (例えば、keypress) は、(正しく) 生成されません。 IME は、事実上クリップボードと同様の使われ方をしています。 つまり、IME の「完了」アクションが呼び出されたときに、 そのコンテンツが貼り付けられる、というわけです。 ただし、「貼り付け」作業は ブラウザー内でもシグナル通知されません。


フィードバック