gpt4 book ai didi

asp.net - 对于 webkit 浏览器,向下滚动页面后,AutoCompleteExtender 的位置错误

转载 作者:行者123 更新时间:2023-12-03 00:12:17 25 4
gpt4 key购买 nike

我的页面上有一个 AutoCompleteExtender,它工作正常,但是当我向下滚动页面并使用它时,建议会显示在错误的(垂直)位置。
Safari 和 Chrome 会出现这种情况,但 IE 和 FF 不会出现这种情况,所以我认为这可能是 webkit 的错误。
代码如下:

<td>
<div style="position: relative;">
<asp:TextBox ID="DepartureAirportTextBox" runat="server" CssClass="DepartureAirport airport-textbox"
onblur="javascript:DepartureLostFocus();" onkeydown="javascript:DepartureChanged(event);"></asp:TextBox>
<asp:Panel ID="DepartureAutocompleteDropDownPanel" runat="server" ScrollBars="Vertical"
CssClass="autocomplete-panel" Style="display: none;" />
<AjaxControlToolkit:AutoCompleteExtender ID="DepartureAirportAutoComplete" runat="server"
TargetControlID="DepartureAirportTextBox" CompletionSetCount="200" ServicePath="../WebServices/SecureService.asmx"
ServiceMethod="ListAirports" MinimumPrefixLength="3" BehaviorID="DepartureAirport"
CompletionListElementID="DepartureAutocompleteDropDownPanel" OnClientItemSelected="SelectDepartureAirport"
OnClientPopulating="ShowDepartureIcon" OnClientPopulated="HideDepartureIcon">
</AjaxControlToolkit:AutoCompleteExtender>
</div>
</td>

我已经尝试过this & this SO 上的解决方案,但没有一个有效。
如何解决?

更新:
the simplest example微软的就有这个问题。添加一些<p>文本框和扩展器之前和之后的元素用于创建可滚动区域并对其进行测试。

<asp:TextBox ID="txtMovie" runat="server"></asp:TextBox>
<AjaxControlToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" TargetControlID="txtMovie"
runat="server" UseContextKey="True" MinimumPrefixLength="2" ServiceMethod="GetCompletionList" />

获取 GetCompletionList 的代码从上面的链接。这个问题很容易重现。

最佳答案

我找到了solution on Asp.net forums .

function resetPosition(object, args) {
var tb = object._element;
var tbposition = findPositionWithScrolling(tb);
var xposition = tbposition[0];
var yposition = tbposition[1] + 20; // 22 textbox height
var ex = object._completionListElement;
if (ex)
$common.setLocation(ex, new Sys.UI.Point(xposition, yposition));
}
function findPositionWithScrolling(oElement) {
if (typeof (oElement.offsetParent) != 'undefined') {
var originalElement = oElement;
for (var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent) {
posX += oElement.offsetLeft;
posY += oElement.offsetTop;
if (oElement != originalElement && oElement != document.body && oElement != document.documentElement) {
posX -= oElement.scrollLeft;
posY -= oElement.scrollTop;
}
}
return [posX, posY];
} else {
return [oElement.x, oElement.y];
}
}

在 Extender 的 OnClientShown 事件上调用 resetPosition

关于asp.net - 对于 webkit 浏览器,向下滚动页面后,AutoCompleteExtender 的位置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com