2

我必须让一个 div 出现在输入框旁边,但是这个 div 直接位于 body 下方,这与位于许多 div 下方的输入框不同。

所以场景是我有很多输入,我想在这个 div 内容中显示一些错误。我检查在模糊上输入的内容,然后无论哪个输入发生模糊,我都会获取这个输入框的位置,设置我的 div 的 xy 位置,然后取消隐藏它。

编码:

var input=Y.one("#input1");
var errorDiv=Y.one('#errorDiv');

input.on('blur',function(e){
  var xy=input.getXY();
  errorDiv.setXY([xy[0]+30,xy[1]]);
  errorDiv.removeClass('hide');
});

我面临的问题是 setXY 第一次不起作用。只有在我第二次改变焦点后,setXY 才会放置正确的位置。调试的时候发现,经过这条语句后errorDiv.setXY([xy[0]+30,xy[1]]);,error div的xy位置还是0,0。

有人可以告诉我我在这里做错了什么吗?

4

1 回答 1

1

我相信您需要交换处理errorDiv' 外观的顺序。因此,不要设置位置然后取消隐藏,而是尝试取消隐藏 div,然后更改其位置。

简单地改变这个:

  errorDiv.setXY([xy[0]+30,xy[1]]);
  errorDiv.removeClass('hide');

对此

  errorDiv.removeClass('hide');
  errorDiv.setXY([xy[0]+30,xy[1]]);

我创建了一个演示此更改的演示。

我以前遇到过这个问题,我不完全确定它为什么会发生,因为我没有深入研究它,但我的理论是它与要求元素首先可见以进行适当的处​​理有关坐标计算。希望这可以帮助。

于 2013-10-31T13:57:51.190 回答