2013-02-26 14 views
8

私はExt.form.Panelの中にExt.windowを持っています。フォームの高さはウィンドウの高さよりも高いので、ウィンドウ上に垂直スクロールがあります。Ext.formバリデーションを回避する

フォームフィールドの検証(validitychangeイベント)で、スクロールが先頭にジャンプします。

この現象を回避するにはどうすればよいですか?

答えて

1

私は同じ問題を抱えている:(

私は時々、それはまだトップにジャンプする(それが80%に動作します)不気味な回避策を作った。 あなたが知っておくべき、私は "のレイアウトでウィンドウを持っていることフォーム 'のxtypeで' fit 'のレイアウトを持つウィンドウがある場合は、コードを少し変更する必要があります。 たとえば、el.child( "。 Xウィンドウ・ボディ」、fasle)は動作しません。

init: function() {    
    this.control({ 

      ... 

     /** My Ext.window.Window is called reservationwindow **/ 
     'reservationwindow': { 
      afterrender: function(comp) { 
       // comp is this Ext.Component == wrapper 
       var el = comp.getEl(); 
       //extjs adds the scrollbar to the body element... 
       var elForm = el.child(".x-window-body", false); 
       // or el.child(".x-panel-body", false); 

       //we are listinig to the scroll-event now 
       this.myFormEl = elForm; 
        this.safeScroll = {top:0, left:0}; 
       elForm.on('scroll', function() { 
        console.log("save"); 

        this.safeScroll = this.myFormEl.getScroll(); 
       }, this); 
       elForm.on('click', function() { 
        var resWin = this.getResWin(); 
        resWin.scrollBy(0,this.safeScroll.top,false); 
        console.log("reset"); 
       }, this); 
       elForm.on('keyup', function() { 
        var resWin = this.getResWin(); 
        resWin.scrollBy(0, this.safeScroll.top, false); 
        console.log("reset"); 
       }, this); 
      } 

あなたが見ることができるように、私はスクロールイベントを聴いていますスクロールバーを安全にリセットしてください。ときには(特にテキストボックスに非常に素早く書き込みを行っている場合)、イベントは別の順序で表示され、ページはまだ上にジャンプします。場合によっては、周囲がちらちら見えることもあります(元の位置に戻すには時間がかかりすぎる場合)。

だから私が言ったように、その恐ろしい回避策。 より良い解決策が見つかったら、教えてください。

がtextareafieldにオプションを育てることを、私はまた、考え出し

EDITは、トラブルの一つでした。

{ 
    id: this.id + '-details', 
    xtype: 'textareafield', 
// grow: true,  now it isn't jumping 
    name: 'message', 
    fieldLabel: 'Zusätzliche Informationen', 
    labelAlign: 'top', 
    renderder: 'htmlEncode', 
    disabled: isDisabled, 
    anchor: '100%' 
} 
2

なぜ私のフォームのうちの1つがスクロールアップし、他のものがスクロールしなかったのか分かりました。レイアウトマネージャーを明示的に指定するのを忘れていて、vboxレイアウトは有効ではありませんが、有効性の変更時にデフォルトのレイアウトマネージャー(アンカー)がスクロールして有効になりました。すべてがまったく同じように見えますが(align: 'stretch'のvbox)、エラーが表示されているか非表示になっていた場合は、動作が異なります。

+0

ありがとうございます、それはme.justレイアウトを 'vbox'に変更します。 – wengeezhang

関連する問題