2016-03-24 7 views
0

Ext.form.field.Tagコンポーネントを使用しています。正しい形式で値の文字列を貼り付けてコピーすると、すべての値が選択され、すべてが完全に機能します。ただし、値が正確に貼り付けられていない場合、つまりコンマの前後にスペースがあったり、文字列の末尾にカンマがない場合は、値の一部が同期しません。ExtJSフォームフィールド - 複数の値を設定する

文字列の形式が間違っている場合は、コンマの前/後に空白を削除して修正できますが、決してそのようなことはありません。例えば

、貼り付けた文字列がある場合:

"1,2,3, 4, 5, 6, 7,8,9,10," 

コンマの間にスペースを入れずに値のみ、それはドロップダウンリストと同期する前と後。したがって

1,2,3,8,9, and 10 

は、同期されますが、残りは無視されます。

これを処理するにはどうすればよいでしょうか?

"変更"は、これらの値が同期された後にのみ起動され、その時点で無視された値が失われているため、「beforechange」イベントのようなものが必要です。

答えて

0

changeイベントのフィールド(this)に貼り付けられた文字列に等しい "lastMutatedValue"というプロパティが含まれていることがわかりました。

change:function(fld_){ 
    var str = fld_.getValue(); 
    if(fld_.lastMutatedValue){ 
    //concat current values with copy pasted values 
    str = str + "," + fld_.lastMutatedValue.replace(/\s*,\s*/g, ','); //removes any white spaces before/after commas 
    } 
    fld_.setValue(str); 
} 
0

「フォーカス」イベントを試しましたか? 'change'イベントの前にトリガする必要があります。

+0

「フォーカス」は値を貼り付ける前に発生します。 – stackato

関連する問題