我必须在输入框旁边显示一个div,但是这个div直接位于正文下方,而不像输入框下面的许多div。
所以场景是我有很多输入,我想在这个div内容中显示一些错误。我检查在模糊处输入的内容,然后无论哪个模糊的输入,我取这个输入框的位置,我的div的setXY位置,并取消隐藏它。
代码:
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]]);
之后,错误div的xy位置仍为0,0。
有人可以告诉我这里我做错了什么吗?
答案 0 :(得分:1)
我相信您需要交换处理errorDiv
外观的顺序。因此,不要设置一个位置然后取消隐藏,尝试取消隐藏div,然后改变它的位置。
只需更改 this:
即可 errorDiv.setXY([xy[0]+30,xy[1]]);
errorDiv.removeClass('hide');
this。
errorDiv.removeClass('hide');
errorDiv.setXY([xy[0]+30,xy[1]]);
我创建了demo来证明这一变化。
之前我遇到过这个问题,而且我完全确定它为什么会发生,因为我没有深入研究它,但我的理论是它与它有关要求元素首先可见,以便进行适当的坐标计算。希望这会有所帮助。