当内容长于高度时,可以让 jqueryUI 对话框滚动条从顶部开始吗?

Posted

技术标签:

【中文标题】当内容长于高度时,可以让 jqueryUI 对话框滚动条从顶部开始吗?【英文标题】:Possible to have jqueryUI dialog scrollbar start at the top, when content is longer than height? 【发布时间】:2012-04-01 08:03:46 【问题描述】:

我正在使用 jquery UI 对话框让用户接受条款和条件弹出窗口,其中内容太长而无法适应弹出窗口的高度。因此,当对话框弹出时会出现一个滚动条,但它会在底部打开滚动条。

这似乎无法通过对话框选项实现。

谁知道让对话框在顶部滚动条打开的方法?

【问题讨论】:

滚动窗格底部是否有任何表单元素(输入、按钮等)?因为对话框在这些元素的聚焦方面存在一些问题。一种解决方法是在对话框标记的顶部附加一个输入,并使用对话框的打开回调将其删除。也许这个问题与this question有关。 【参考方案1】:

就像上面评论的那样,您可能在对话框内容的底部有一个元素最初接收焦点,这会导致滚动条在对话框打开时滚动到该元素。您可以尝试评论中的解决方法,如果问题确实是由焦点问题引起的,这应该可以工作。或者,您can manually scroll the dialog's content to the top。您可以通过指定一个打开的回调并将对话框的内容滚动到其中的顶部位置来完成此操作,如下所示:

    $("#dialog").dialog(
        open: function () 
            $(this).scrollTop(0);
        
    );

【讨论】:

谢谢。两种方法都很好用。似乎是 jqueryUI 中的一个错误,除非我错过了 why 您希望将焦点默认设置为第一个输入元素。 @devjeff 没问题,如果我的回答对您有帮助,请考虑投票或接受。谢谢。 这让我很困扰。默认值似乎向输入打开或至少向底部打开。对话框顶部提供的任何信息都会丢失或必须滚动才能查看。在对话框顶部打开并允许用户向下滚动是有意义的。不幸的是,$(this) 不起作用,也没有调用用于 dialog('open') 的相同选择器,因为我使用了 autoOpen: true 选项。相反,我设置了 $('body').scrollTop(0);因为对话框在加载时在页面顶部打开。

以上是关于当内容长于高度时,可以让 jqueryUI 对话框滚动条从顶部开始吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何垂直居中具有不同高度选项卡的对话框?

JQueryUI 对话框:“自动”宽度不考虑垂直滚动条

当字符串列内容长于已经存在的内容时,HDFStore.append(string, DataFrame) 失败

无法让自定义对话框与 DirtyForms 一起使用

jQueryUI自动完成在没有匹配时在下拉列表中显示“其他”并让用户能够选择它

打开带有动态内容的 jQuery UI 对话框