【问题标题】:A issue with the jquery dialog when using the themeroller css使用 themeroller css 时 jquery 对话框的问题
【发布时间】:2010-09-07 22:02:48
【问题描述】:

jquery ui 对话框的demos 都使用“flora”主题。我想要一个定制的主题,所以我使用了themeroller 来生成一个css文件。当我使用它时,一切似乎都工作正常,但后来我发现我无法控制对话框中包含的任何输入元素(即无法输入文本字段,无法选中复选框)。进一步调查显示,如果我将对话框属性“modal”设置为 true,就会发生这种情况。当我使用植物主题时,这不会发生。

这里是js文件:

topMenu = {
    init: function(){
        $("#my_button").bind("click", function(){
            $("#SERVICE03_DLG").dialog("open");
            $("#something").focus();
        });

        $("#SERVICE03_DLG").dialog({ 
            autoOpen: false,
            modal: true, 
            resizable: false,
            title: "my title",
            overlay: { 
                opacity: 0.5, 
                background: "black" 
            }, 
            buttons: { 
                "OK": function() { 
                    alert("hi!");
                }, 
                "cancel": function() { 
                    $(this).dialog("close"); 
                } 
            },
            close: function(){
                $("#something").val("");
            }
        });
    }
}

$(document).ready(topMenu.init);

这是使用植物主题的 html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
<script src="jquery-1.2.6.min.js" language="JavaScript"></script>
<link rel="stylesheet" href="flora/flora.all.css" type="text/css">
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script>
<script src="TopMenu.js" language="JavaScript"></script>
</head>
<body>

<input type="button" value="click me!" id="my_button">
<div id="SERVICE03_DLG" class="flora">please enter something<br><br>
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24">
</div>

</body>
</html>

这是使用下载的themeroller主题的html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
<script src="jquery-1.2.6.min.js" language="JavaScript"></script>
<link rel="stylesheet" href="jquery-ui-themeroller.css" type="text/css">
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script>
<script src="TopMenu.js" language="JavaScript"></script>
</head>
<body>

<input type="button" value="click me!" id="my_button">
<div id="SERVICE03_DLG" class="ui-dialog">please enter something<br><br>
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24">
</div>

</body>
</html>

如你所见,只有引用的css文件和类名不同。 有人知道可能出了什么问题吗?

@David:我试过了,但它似乎不起作用(在 FF 或 IE 上都没有)。我试过内联css:

style="z-index:5000"

我也尝试过引用外部 css 文件:

#SERVICE03_DLG{z-index:5000;}

但这些都不起作用。我在您的建议中遗漏了什么吗?

编辑:
用brostbeef解决!
由于我最初使用的是flora,所以我错误地认为我必须指定一个类属性。事实证明,这仅在您实际使用植物主题(如示例中)时才是正确的。如果您使用自定义主题,则指定类属性会导致这种奇怪的行为。

【问题讨论】:

  • 你还有这个问题吗??
  • 不知道为什么您删除了代码并替换了链接...现在已损坏,无法参考。
  • 哎呀,完全忘记了这一点。我会看看我是否可以编辑帖子以恢复代码。

标签: javascript jquery user-interface dialog


【解决方案1】:

我认为这是因为您的课程不同。
&lt;div id="SERVICE03_DLG" class="flora"&gt;(植物区系)
&lt;div id="SERVICE03_DLG" class="ui-dialog"&gt;(自定义)

即使使用植物主题,您仍然可以使用 ui-dialog 类将其定义为对话框。

我以前做过模态,我什至从未在标签中定义过一个类。 jQueryUI 应该会为您解决这个问题。

尝试摆脱类属性或使用“ui-dialog”类。

【讨论】:

  • 谢谢!原来这实际上是植物群的问题。我将编辑问题以反映它。
【解决方案2】:

在 Firebug 中玩过这个之后,如果你添加一个大于 1004 的 z-index 属性到你的默认 div,id 为“SERVICE03_DLG”,那么它将起作用。为了确定,我会给它一个非常高的值,比如 5000。

我不确定是什么导致了这个问题。他们可能已经更改或忽略了它变成对话框的目标 div 的位置属性。

【讨论】:

    【解决方案3】:

    我尝试使用对话框和选项卡来实现主题滚轮主题,结果发现 主题滚轮 CSS 不适用于官方 jQuery!特别是对于对话框和选项卡,他们修改了官方 jquery 的元素类。看这里: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

    一个用户的评论:

    3) 我生成的主题 下载的好像不完整—— 当我尝试使用它时,我的标签 (适用于植物主题,代码 与文档相同 示例)不要将样式设置为标签

    遇到 3 我以为我是 卡住了,必须恢复使用 “flora”……我后来发现 阅读“demo”的源代码 文件,如果我调整我的 html 并给出 我用于标签的

  • 项目 “ui-tabs-nav-item”类然后它 会工作的。

    themeroller 生成的主题是 因此不幸的是不完整。如果 标签的东西不完整,这让我 想知道还有什么不完整的。它 相当令人沮丧。 :(

  • 随后是themeroller开发者评论:

    3) 我们来看看。你是对的,那些课程 应该由插件添加。不过就目前而言,它可能 将它们添加到您的标记中不会有太大伤害,因此您 可以使用themeroller 主题。 不过,我们会检查一下。我认为我们的选择器可能是 而是基于父 ui-tabs 选择器,但我认为 我们试图不在选择器中使用元素。考虑 它在待办事项列表中

    【讨论】:

      【解决方案4】:

      伙计,这是一个很好的。我已经尝试在这两页上做很多事情。您是否尝试过完全不使用 CSS,然后尝试两个页面?我使用 Firebug 从两个页面的标题中删除了 CSS,并且输入仍然在一个页面上有效,而在另一个页面上无效 - 但是,我倾向于相信 Firebug 并没有完全从渲染中删除 CSS,而你'如果你真的从代码中删除它会得到不同的结果。

      我还发现您可以使用鼠标将文本粘贴到文本框中 - 它只是不接受键盘输入。不过,似乎没有任何事件处理程序会干扰这一点。

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 2011-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 2011-10-04
        相关资源
        最近更新 更多