2008-09-05 1 views
6

demos для jQuery ui all используют тему «флора». Я хотел настроить тему, поэтому я использовал themeroller для генерации файла css. Когда я его использовал, все, казалось, работало нормально, но позже я обнаружил, что не могу контролировать какой-либо элемент ввода, содержащийся в диалоговом окне (т. Е. Не может вводить текстовое поле, не может проверять флажки). Дальнейшее исследование показало, что это произойдет, если установить атрибут диалога «модальный» в true. Этого не происходит, когда я использую тему флоры.Проблема с диалогом jquery при использовании themeroller css

Вот файл 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> 

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

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

style="z-index:5000" 

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

#SERVICE03_DLG{z-index:5000;} 

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

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

+0

У вас все еще есть эта проблема ?? – MDCore 2008-10-16 04:25:47

+0

Не знаете, почему вы удалили свой код и заменили ссылки ... которые теперь сломаны так неспособны ссылаться. – clairestreb 2014-12-24 21:51:28

ответ

3

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

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

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

Попробуйте избавиться от атрибута класса или с помощью класса «ui-dialog».

1

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

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

0

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

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

1

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

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

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

Столкнувшись 3 Я думал, что застрял и должен вернуться с помощью «Флора" ... С тех пор я обнаружил чтения исходного кода „DEMO“ файла, если я поправляю HTML и дать в < li> элементы я использую для моих закладок в «UI-tabs- nav-item ", то он будет работать.

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

следуют ThemeRoller разработчиков комментарии:

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