我想更改Grails UI插件的datePicker部分的日历显示位置。经过一番挖掘后,我在InputTagLib.groovy文件中找到了它:
out << """
YAHOO.util.Event.on("${showButtonId}", "click", function() {
var buttonRegion = YAHOO.util.Dom.getRegion('${showButtonId}');
var buttonHeight = buttonRegion.bottom - buttonRegion.top;
var buttonWidth = buttonRegion.right - buttonRegion.left;
var xy = YAHOO.util.Dom.getXY('${showButtonId}');
var newXY = [xy[0] + buttonWidth, xy[1] + buttonHeight];
YAHOO.util.Dom.setXY('${id}_calContainer_c', newXY);
GRAILSUI.${jsid}Panel.show();
if (YAHOO.env.ua.opera && document.documentElement) {
// Opera needs to force a repaint
document.documentElement.className += "";
}
});"""
位置设置在这一行:
YAHOO.util.Dom.setXY('${id}_calContainer_c', newXY);
YAHOO.util.Dom.setXY()方法有两个参数。
setXY方法的第一个参数是HTMLElement的ID或实际的HTMLElement对象。第二个参数是一个包含两个值的数组:[x,y]其中x是距文档左边缘的距离,y是距文档上边缘的距离。
来源:http://developer.yahoo.com/yui/examples/dom/setxy.html
因此,我可以通过更改传递给setXY方法的newXY变量中的值来轻松调整日历显示的位置,并且它可以正常工作。
但是,如果我调整页面大小,日历会将其左上角直接放在showButton左下角的下方。当页面调整大小时,重新定位的原因是什么?如何解决?
编辑:更多信息: