flexではテキストフィールドに入力文字の制限ができます。
以下のような感じです。
This movie requires Flash Player 9
この辺りは、HTMLと同じと思っていた人には「へー、そんなこともできるんだー」と思うのではないでしょうか?
私はそう思いました。
さて、この制限を使います。
<mx:TextInput restrict="0-9" />
これで数字しか入力できません。
同じように、
restrict="A-Z"
で、大文字のA-Zまでです。ちなみに、自動的に大文字になるようです。
このように数値や、アルファベットなどはこれで簡単に制御ができます。
さて、今度は、よくある「カナ」の入力を制限してみましょう。
日本語のカナは\u30F1から\u30FAまでだからと・・・・
<mx:TextInput restrict="\u30A1-\u30FA" />
あれ、効かない????
なぜー、とちょっとはまってしまいました。
いやー、\を使ったエスケープ型の文字列としてではなく、たんなる\として扱われてしまうのです。
理屈ではわかるのですが、流れでつい、それでも問題ないと思ってしまいます。
したがって、これはActionScriptでは、
[AS]
restrict = “\\u30A1-\\u30FA”;
[/AS]
と書いているのと等しくなっているのです。
したがって、エスケープシーケンス(\)をつかって書きたい時は、
<mx:Script>
<![CDATA[
[Bindalbe]
private var hanKana:String = "\u30A1-\u30FA";
]]>
</mx:Script>
<mx:TextInput restrict="{hanKana}" />
として記述しなくれてはいけないのですね。面倒です。
どうせ、日本語ではこの辺りの入力制限での処理はそんなにかわらないので、共通ファイルとして作成してインクルードして利用したほうがいいのかもしれませんね。
まあ、どうせソースはUTF-8で書かれているのでしょうから直接書いてしまってもいいのでしょうが、
どうしても、その他の言語の文化がそれを阻害します。。。。。


