[Ext JS ] 7.25.1 Form或者面板自动定位到错误的输入框

Form有众多输入框, 一般会设置纵向的滚动条。 该状况下在提交表单时,如果某些字段的输入值非法, 且这些字段不在直接显示的页面中时, 点击提交按钮感觉没有产生效果。
比较理想的效果是如果有字段输入非法, 滚动条能自动滚动到非法的字段, 如下图:
在这里插入图片描述

实现方案探求

如何实现上述的效果呢? 遍查Ext.form.Panel 相关方法, 找到了 scrollTo ( x, y, [animate] ) 可以设置滚动条的位置。这个方法有三个参数, 前两个分别是x和y坐标, 第三个是可选的参数,设置设置是否有动画效果。
于是想到: 将非法字段的坐标设置作为参数进行滚动条的设置是否就可以了呢? 代码类似:

form.scrollTo(fields[i].getPosition()[0],fields[i].getPosition()[1],true);

在滚动条没有任何滚动的时候, 上面是有效的, 但是但滚动条滚动之后,上面的方法就失效了。为什么呢?
原因是滚动条滚动之后, 各字段对应的坐标都会发生变化, 这个变化的量也就是滚动条的量。这里主要是纵坐标, 也就是 formPanel.getScrollY()

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/124329927