Ajaxフレームワーク UI部品リファレンス
目次 索引 前ページ次ページ

第4章 機能付加部品> 4.1 入力支援機能

4.1.2 Limiter

Limiterは、入力文字を制限する機能付加部品です。よく使われる可能性のある検証ルールをあらかじめ実装したものとして、NumeralOnlyLimiterEnableCharTypeLimiterがあります。
本部品は、ユーザが独自の検証ルールを作成する場合に使用します。

なお、Limiterは、対象となる部品へのキー入力および文字列のペーストに対する制限を行う機能部品です。これら以外の方法による部品への値設定(初期値設定、APIによる更新、モデルとのバインディング)については、Limiterでは制限しません。

機能付加対象は以下のとおりです。


Limiterを利用できるブラウザ
Limiterは、Internet Explorerでだけ利用可能な部品です。ほかのブラウザでは、動作しません。また、Limiterは、1つの部品につき1つだけ設定できます。
Limiterを追加すると、入力フィールドに以下の制約が追加されます。

述形式

<div rcf:type="Limiter" rcf:target="xxx"></div>

または

<span rcf:type="Limiter" rcf:target="xxx"></span>


子要素は記述できません。
本部品は画面に表示されないため、<div>タグおよび<span>タグのどちらで記述しても違いはありません。

ロパティ

表の項目の意味は、“表の項目の意味”を参照してください。

名前

データ型

説明

省略

省略値

属性指定

更新

部分更新

target

String

機能付加対象のrcf:idを指定します。

不可

不可

不可

limiter

doLimit関数およびdoLimitOnPaste関数を持つオブジェクト

キー入力制限を行う関数
(注)

キー入力を制限しないで、ペーストを禁止する関数

不可

不可

そのほかにも、画面部品および機能付加部品で共通のプロパティを指定することができます。詳細は、“画面部品共通プロパティ”、および“機能付加部品共通プロパティ”を参照してください。

注) limiterプロパティ
limiterプロパティは、キーが入力されたときのキー入力の制限を行うdoLimit関数、およびペーストされたときの制限を行うdoLimitOnPaste関数を持つオブジェクトを指定します。オブジェクトには、doLimit、doLimitOnPaste関数のどちらか、または両方を持つことができます。例えば、doLimitだけを持つオブジェクトを指定した場合、ペーストされたときの制限はデフォルト動作になります。

doLimitおよびdoLimitOnPasteの例を以下に示します。

入力可能な文字列を、英字(+アンダースコア)で始まる英数字(+アンダースコア)に限定する例

<script type="text/javascript">
//<![CDATA[
    var limit1 = {
        doLimit: function(limitObj) {
            // 返却値
            var acceptable = false;
            
            // 英字およびアンダースコア (すべての位置)
            if ((limitObj.charCode >= 65 && limitObj.charCode <= 90) ||
                (limitObj.charCode >= 97 && limitObj.charCode <= 122) ||
                limitObj.charCode == 95) {
                acceptable = true;
            }
            // 数字 (2文字目以降)
            else if (limitObj.charCode >= 48 && limitObj.charCode <= 57) {
                if (limitObj.cursor > 0) {
                    acceptable = true;
                }
            }
            
            return acceptable;
        },

        doLimitOnPaste: function(obj) {
            // 返却文字列
            var result = "";
            
            // 文字の追加位置が先頭か否かを判定するフラグ
            var firstChar = (obj.cursor == 0) ? true : false;
            
            // ペーストする文字列を先頭から順にチェック
            for (var i = 0; i < obj.pasteString.length; i++) {
                var code = obj.pasteString.charCodeAt(i);
                var acceptable = false;
            
                // 英字およびアンダースコア (すべての位置)
                if ((code >= 65 && code <= 90) ||
                    (code >= 97 && code <= 122) ||
                    code == 95) {
                    acceptable = true;
                }
                // 数字 (2文字目以降)
                else if (code >= 48 && code <= 57) {
                    if (!firstChar) {
                        acceptable = true;
                    }
                }

                // 入力可能な文字ならば、返却する文字列に追加
                if (acceptable) {
                    result += obj.pasteString.charAt(i);
                    firstChar = false;
                }
            }
            
            return result;
        }
    }
//]]>
</script>

  ...

<div rcf:id="textInput1" rcf:type="TextInput"></div>
<div rcf:id="limiter" rcf:type="Limiter"
    rcf:target="textInput1" rcf:limiter="limit1"></div>

ベントリスナ

固有のイベントリスナはありません。部品共通のイベントリスナは、“画面部品共通イベントリスナ”を参照してください。

JavaScript API

固有のJavaScript APIはありません。部品共通のJavaScript APIは、“画面部品共通JavaScript API”を参照してください。


目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED