2011-12-08 4 views
0

デフォルトのExtJS form.field.dateでは、datepickerの使用に加えて、日付の手動入力/編集が可能です。ただし、DDに31より大きい数値を入力するか、MMで12を超える数値を入力すると、値が再計算されます。無効なMMまたはDDが入力された場合、ExtJS form.field.dateは日付を再計算します。どのように防止する?

たとえば、表示されているMM/DD/YYYYが12/01/2011で、15/01/2011と編集すると(最大MM値は12になるはずです)、03/01を表示するように再計算します/ 2012 - 最大値を超えて3を追加することを前提としています。

この機能を無効にする方法はありますか?私は検証/エラーメッセージが表示されるようにしたいので、ユーザーは自動的に再計算するのではなく手動で変更する必要があります。これは、他の人が望む基本的な機能のようです - 設定オプションに何か不足していますか?

クロス投稿Ext forums

答えて

1

EXT forum post経由で見つかった自分の質問への答えを追加します。

「ロールオーバー」日付を呼び出すExtは、useStrict: trueを追加することでオフにすることができます。 documentationを参照してください。

Date.useStrict = true; 

私は内線フォーラムで述べたように、私ができる:私はロールオーバー機能をサイト全体を削除したかったので、私は、サイト全体で使用される当社のメインのExt util.jsにこれを追加

なぜこのロールオーバーの振る舞いがフロントエンドユーザーにとって有用なのか、なぜ誰かが意図的に01/33/2011と入力して、02/02/2011になるようにしたいのかをイメージしてください。

3

これを行うことができる設定オプションはありませんが、あなたができることはバリデーター機能を提供することです。この関数は、デフォルトの検証の前に呼び出されます。これは、値を変更する必要があると想定します。

new Ext.form.DateField({ 

    validator : function(value){ 
     var split = value.split('/'); //Assuming/is your seperator 
     if(split[0] > 31) 
     { 
     //Show error 
     } 
     // Other validations etc. 
    } 
}); 

バリデータが呼び出される前に、値の変更が行われた場合は、設定オプションを追加するには: validateOnBlur : true

+0

このVarunに感謝します。より細かいレベルの制御が必要な場合はうまくいきます。 extフォーラムを通して、私はロールオーバー機能を完全に削除するより簡単な方法を見つけました。 – Voodoo

関連する問題