2011-12-07 18 views
0

私はこれに困惑しています。私たちには、生年月日が入力されるExtJSフォームがあります。しかし、しばしば、月または生年月日はわからない。 xx/xx/1984がわからないときはxxを入力するのがコンベンションです。ExtJSの日付ピッカーの入力値に数字以外の数字を入力できるようにする

xxを入力する必要がある場合は、入力することができます。それ以外の場合は、ExtJSの日付ピッカーを使用できます。保存は正常に機能しますが、xx/xx/1984形式で保存してからフォームを再表示すると、入力した生年月日が表示されるのではなく、フィールドは空白になります。これは、ExtJSが日付フィールドの数字以外の部分でチョークするためです。

PHPフォーム:

echo "<input id=\"dobDt\" name=\"dobDt\" value=\"" . getData("dobDd","textarea") . "/" . getData("dobMm","textarea"). "/" .getData ("dobYy", "textarea") . "\" type=\"text\"> 

ExtJSの:

dobDtFormat = new Ext.form.DateField({ 
    fieldLabel: '', 
    format: 'd/m/Y', 
    maskRe : /[\Xx{1,4}\d{1,2}\/]/, 
    validationEvent: false, 
    allowBlank:true 
}); 
dobDtFormat.applyToMarkup(document.mainForm.dobDt); 

extはits date fieldで入力を置き換えます。 'xx'を表示する方法についてのアイデアはありますか?

また、カレンダーが表示され、1日を選択したときに 'xx'を処理する方法がわかりません。理想的には、 'xx/xx/1980'を入力に表示したいのですが、カレンダーを開くと、'01/01/1980 'と解釈されます。

+0

ExtJSは、すぐに使用できる「xx」日付フォーマットをサポートしていないため、 –

答えて

1

ExtJSには、箱から出して「XX」の日付形式をサポートしていないので、あなたがDateFieldのオブジェクトを拡張し、おそらくその機能の一部をオーバーライドする必要があります、例えば:

myNamespace.MyDateField = Ext.extend(Ext.form.DateField, { 
    //your configs, functions to support "xx" behavior 
} 

また、あなたが本当に考えなければならないように思えます。また、このコンポーネントがどのように機能するべきかを、使用可能なすべてのユースケースでどのように機能させるべきかを明確に定義します。たとえば、ユーザーはどのフィールド(月、日、年)に "xx"と数値を指定する必要がありますか? DateFieldはこれ用に設計されていないため、そのためにいくつかのフォームフィールドを追加する必要があります。

は、独自にカスタマイズしたExtJSのコンポーネントを作成する方法の詳細については、こちらを煎茶・ガイドを参照してください。 http://docs.sencha.com/ext-js/4-0/#!/guide/components

(ページ下半分の方法については、「カスタムコンポーネントの作成」、と題したセクションを探してください。)

これがあなたを助けることを願っています。乾杯!

+0

という素晴らしいレスポンスです。私たちはDateFieldオブジェクトの拡張に取り組んでいますが、使用範囲の定義についてのあなたのコメントは貴重です。この場合、ユーザーのワークフローを徹底的に把握する必要があります。 – Voodoo

+0

右に、喜んで助けてください! –

関連する問題