Проблема с диалоговым окном jquery при использовании themeroller css - PullRequest
7 голосов
/ 05 сентября 2008

demos для диалогового окна jquery ui используют тему "flora". Я хотел настроить тему, поэтому я использовал themeroller для создания файла CSS. Когда я его использовал, казалось, что все работало нормально, но позже я обнаружил, что не могу контролировать любой элемент ввода, содержащийся в диалоговом окне (то есть не могу ввести текстовое поле, не могу поставить галочки). Дальнейшее расследование показало, что это произойдет, если я установлю атрибут диалога "модальный" в 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>

Вот HTML, который использует загруженную тему themeroller:

<!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>

Как видите, отличаются только имена файлов и классов, на которые ссылаются. Кто-нибудь знает, что может быть не так?

@ Дэвид: Я попробовал, и, похоже, он не работает (ни в FF, ни в IE). Я попробовал встроенный CSS:

style="z-index:5000"

и я также пробовал ссылаться на внешний файл CSS:

#SERVICE03_DLG{z-index:5000;}

Но ни одна из этих работ. Я что-то упустил в том, что вы предложили?

Edit:
Решить с помощью говяжьего мяса!
Поскольку я изначально использовал флору, я ошибочно предположил, что мне нужно указать атрибут класса. Оказывается, это верно только тогда, когда вы действительно используете тему флоры (как в примерах). Если вы используете настроенную тему, указание атрибута класса вызывает такое странное поведение.

Ответы [ 4 ]

3 голосов
/ 24 октября 2008

Я думаю, это потому, что у вас разные классы.
<div id="SERVICE03_DLG" class="flora"> (флора)
<div id="SERVICE03_DLG" class="ui-dialog"> (по индивидуальному заказу)

Даже с темой флоры вы все равно используете класс ui-dialog, чтобы определить его как диалог.

Я делал модалы раньше и никогда не определял класс в теге. jQueryUI должен позаботиться об этом за вас.

Попробуйте избавиться от атрибута класса или используйте класс "ui-dialog".

1 голос
/ 07 октября 2008

Я попытался реализовать тему themeroller с диалогом и вкладками, и оказалось, что themeroller CSS не работает с официальным jQuery ! Специально для диалога и вкладок, они изменили классы элементов из официальных классов jquery. Посмотреть здесь: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

Комментарий пользователя:

3) созданная мной тема загруженный кажется неполным - когда я пытаюсь использовать его мои вкладки (которые работают с темой флоры, код идентичны документации пример) не стилизоваться под вкладки

Наткнувшись на 3, я подумал, что застрял и придется вернуться с помощью «Флора» ... Я с тех пор открыл чтение исходного кода «демо» файл, который, если я настрою свой HTML и дать

элементы, которые я использую для своих вкладок класс «ui-tabs-nav-item», то это будет работать.

Тема, созданная themeroller: таким образом, к сожалению, неполным. Если материал вкладок неполный, это делает меня Интересно, что еще не завершено. Это было довольно сложно (

и комментарий разработчиков themeroller:

3) Мы посмотрим на это. Вы правы, что эти классы должен быть добавлен плагином. На данный момент, хотя, вероятно, не мешало бы добавить их в разметку, чтобы вы можно использовать темы themeroller. Мы все проверим. Я думаю, что наши селекторы могут быть основанный на родительском селекторе ui-tabs вместо этого, но я думаю мы старались не использовать элементы в наших селекторах. Рассматривать это в списке дел

1 голос
/ 05 сентября 2008

После игры с этим в Firebug, если вы добавите атрибут z-index больше 1004 в ваш div по умолчанию, id «SERVICE03_DLG», то он будет работать. Я бы дал что-то чрезвычайно высокое, например, 5000, просто чтобы быть уверенным.

Я не уверен, что именно в themeroller CSS вызывает это. Они, вероятно, изменили или пренебрегли атрибутом позиции целевого div, который он превращает в диалог.

0 голосов
/ 05 сентября 2008

Человек, это хорошо. Я пытался сделать кучу вещей на этих двух страницах. Вы пытались просто оставить CSS полностью и попробовать обе страницы? Я использовал Firebug для удаления CSS из заголовка на обеих страницах, и ввод все еще работал на одной, а не на другой - но я склонен полагать, что Firebug не полностью удаляет CSS из рендеринга, и вы Если вы действительно удалите его из кода, вы получите другие результаты.

Я также обнаружил, что вы можете вставить текст в текстовое поле с помощью мыши - он просто не будет принимать ввод с клавиатуры. Похоже, на нем нет обработчика событий, который бы мешал этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...