1. #1
    Sencha User
    Join Date
    Nov 2009
    Posts
    21
    Vote Rating
    0
    extusr is on a distinguished road

      0  

    Default Ext.form.HtmlEditor で maxLength バリデート

    Ext.form.HtmlEditor で maxLength バリデート


    お世話になっております。

    Ext.form.HtmlEditor のバリデートについてアドバイスをいただきたいです。

    HtmlEditor には maxLength が実装されていないようなのですが、
    maxLength が使えるよう拡張するコードなどお教えいただきたいです。

    ExtJS3では海外フォーラムで、このような話題がいくつかあがっていたようなのですが、
    お恥ずかしながら勉強が足りずExtJS4用に改変することができませんでした…。

    また、ExtJS4にバージョンが上がっても実装されていないということは、
    HtmlEditoer で maxLength を使用するのになにかよくない理由などがあるのでしょうか。

    どうか、ご助言のほどよろしくお願いいたします。

    【動作環境】
    ExtJSのバージョン: 4.1 Beta 2

  2. #2
    Sencha User
    Join Date
    Mar 2010
    Posts
    34
    Vote Rating
    0
    shobuno is on a distinguished road

      0  

    Default


    回答ではありませんので悪しからず…

    まず、探し出したEXT3のURLは張っておいた方が、レスが付きやすいと思います。


    HtmlEditor に maxLength が無いのは、付ける意味があまり無いからではないでしょうか。

    ユーザーが入力したテキストに対し、HTMLタグが無数に設定することが出来ます。
    ということは、maxLength は何文字に設定するのでしょうか?1万文字?2万文字?
    さらに日本語の場合は、マルチバイト(1文字換算を2byteや3byte)の考慮も必要です。


    「なので、maxLength を指定しても意味が無い。」と開発者は考えたんじゃないでしょうか。
    (私の適当です(笑))
    なので、私としてはsubmit時にチェックしても良いんじゃ…?と思いました。

    DBの場合は、INSERTエラーを取るのも一つの手かと…
    (怒られそうだな…)



    ちなみに「Ext.form.field.HtmlEditor」クラスには、「Ext.form.field.Field」がmixinsされています。
    なので「Ext.form.field.HtmlEditor」クラスを継承した独自クラスを作って「getErrors」ファンクションをオーバーライドしてやれば良いのでは…

    その中で、エラーチェック、エラーメッセージの設定を行えばいける気がします。
    エラーチェックと、エラーメッセージの処理は「Ext.form.field.Text」を参考にすれば大丈夫な気がしてます。

    (ただし、試してないので、内容の保証はしかねます♪)




    補足:
     Extjsのソースは、解凍フォルダの「ext-4.1-rc3\extjs-4.1.0-rc3\src\form\field」にあります。

  3. #3
    Sencha User
    Join Date
    Nov 2009
    Posts
    21
    Vote Rating
    0
    extusr is on a distinguished road

      0  

    Default


    ご助言いただきましてありがとうございます。
    このような仕様になっている意味、なるほどと思います。

    拡張した独自クラスを作ってやれそうなので、
    調べながらやってみようと思います。

    (ただ、ご提案のとおり必要な場合のみsubmit前チェックを入れるのが、一番手軽そうですね!)

    ご返信遅れて失礼いたしました。
    アドバイスありがとうございました!

Thread Participants: 1