0

メールアドレス用のカスタム ValidationTextBox ウィジェットを作成しようとしています。システムには電子メール アドレスの入力を使用する多くの領域があり、デフォルトの正規表現や無効なメッセージなどを含む 1 つのウィジェットを作成したいと考えています。私の拡張クラスに追加されました。私のコードは次のとおりです。

define([
    "dojo/_base/declare", // declare
    "dijit/form/ValidationTextBox",
    "dojo/_base/lang"
], 
function(declare, ValidationTextBox, lang){  

    return lang.mixin(ValidationTextBox, {
    invalidMessage: "Please enter a valid email address.",
    missingMessage: "Please enter a valid email address.",
    regExp : "[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$",
    maxlength : 50,
    placeholder : 'Your Email'
    });
});

これを自分のページで使用すると、無効なメッセージは正常に機能しますが、これを使用する場所ではプレースホルダーが表示されず、maxlength も適用されません。lang.mixin アプローチに加えて、ここで説明されている宣言アプローチも使用してみました: http://www.sitepen.com/blog/2010/07/01/creating-and-enhancing-dojo-classes/ . 同じ結果が得られます。

私が見逃しているものはありますか?

4

1 に答える 1

0

http://jsfiddle.net/phusick/eLkwb/で実際に説明した両方のオプションを参照してください

dojo/_base/lang::extendの代わりに使用mixin:

lang.extend(ValidationTextBox, {
    invalidMessage: "Please enter a valid email address.",
    missingMessage: "Please enter a valid email address.",
    pattern: "[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$",
    required: true,
    maxLength: 3,
    placeHolder : 'Your Email'
});

また、次の点にも注意してください。

  • regExpは非推奨です。pattern代わりに使用してください
  • 属性は大文字と小文字が区別されます: so placeHolder,maxLength
  • dojo/parser::parse()拡張が行われた後に確認してください(マークアップのインスタンス化のため)
  • maxLength何らかの理由で機能しません (以下のdeclare回避策を参照してください)

サブクラス化を介して同じことを達成する:

define([
    "dojo/_base/declare",
    "dijit/form/ValidationTextBox"
], function(
    declare,          
    ValidationTextBox
) {

    return declare([ValidationTextBox], {
        postCreate: function() {
            // a workaround to make maxLength working
            this.inherited(arguments);            
            this.set("maxLength", this.maxLength);
        },            
        invalidMessage: "Please enter a valid email address.",
        missingMessage: "Please enter a valid email address.",
        pattern: "[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$",
        required: true,
        maxLength: 3,
        placeHolder : 'Your Email'
    });
});
于 2012-10-01T17:39:03.597 に答える