私はExt.form.Panel
の中にExt.window
を持っています。フォームの高さはウィンドウの高さよりも高いので、ウィンドウ上に垂直スクロールがあります。Ext.formバリデーションを回避する
フォームフィールドの検証(validitychange
イベント)で、スクロールが先頭にジャンプします。
この現象を回避するにはどうすればよいですか?
私はExt.form.Panel
の中にExt.window
を持っています。フォームの高さはウィンドウの高さよりも高いので、ウィンドウ上に垂直スクロールがあります。Ext.formバリデーションを回避する
フォームフィールドの検証(validitychange
イベント)で、スクロールが先頭にジャンプします。
この現象を回避するにはどうすればよいですか?
私は同じ問題を抱えている:(
私は時々、それはまだトップにジャンプする(それが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%'
}
なぜ私のフォームのうちの1つがスクロールアップし、他のものがスクロールしなかったのか分かりました。レイアウトマネージャーを明示的に指定するのを忘れていて、vbox
レイアウトは有効ではありませんが、有効性の変更時にデフォルトのレイアウトマネージャー(アンカー)がスクロールして有効になりました。すべてがまったく同じように見えますが(align: 'stretch'
のvbox)、エラーが表示されているか非表示になっていた場合は、動作が異なります。
ありがとうございます、それはme.justレイアウトを 'vbox'に変更します。 – wengeezhang