2008-09-05 39 views
6

jQuery UI對話框的demos都使用「flora」主題。我想要一個自定義的主題,所以我使用該組合器生成一個css文件。當我使用它時,一切似乎都工作正常,但後來我發現我無法控制對話框中包含的任何輸入元素(即無法輸入到文本字段中,也無法檢查複選框)。進一步調查發現,如果我將對話框屬性「模態」設置爲true,就會發生這種情況。這在我使用植物羣主題時不會發生。使用themeroller css時jquery對話框的問題

這裏是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解決!
由於我最初使用植物區系,我錯誤地認爲我必須指定一個類屬性。事實證明,只有在實際使用植物羣主題時才如此(如樣本中所示)。如果您使用自定義主題,指定類屬性會導致奇怪的行爲。

+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應該照顧你。

試着擺脫class屬性或使用「ui-dialog」類。

1

在Firebug中玩這個之後,如果你添加一個大於1004的z-index屬性到你的默認div,ID爲「SERVICE03_DLG」,那麼它將起作用。我想給它一些非常高的東西,比如5000,只是爲了確定。

我不確定它是什麼引起這一點的themeroller CSS。他們可能已經改變或忽略了目標div的位置屬性,它變成了一個對話框。

0

男人,這是一個很好的。我試着在這兩頁上做了一堆事情。你有沒有嘗試過把CSS完全放出來,然後嘗試兩頁?我使用Firebug從兩頁上的標題中刪除CSS,並且輸入仍然在一個上,而不是在另一個上 - 但是,我傾向於認爲Firebug不會從渲染中完全刪除CSS,而您如果你真的從代碼中刪除它,會得到不同的結果。

我還發現你可以使用鼠標將文本粘貼到文本框中 - 它只是不接受鍵盤輸入。雖然似乎沒有任何事件處理程序會干擾這一點。

1

我試圖用對話框和選項卡實現一個themeroller主題,事實證明,themeroller CSS不適用於官方jQuery!特別是對話框和標籤,他們修改了官方jquery的元素類。在這裏看到: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

用戶的評論:

3),我 下載生成的題材似乎是不完整的 - 當我嘗試使用我的標籤 (與菌羣工作主題,代碼 等同於文檔 例子)不要讓風格爲標籤

已經運行到3我想我是 卡住,必須使用0123恢復「flora」...我自 發現了 文件的源代碼,如果我調整我的html並給 < li>我用於我的標籤 的項目「ui-tabs-導航項目「類然後它 將工作。

由整理者生成的主題是 ,因此不幸的是不完整。如果 標籤的東西不完整,這讓我想知道還有什麼不完整。它 是相當沮喪。 :(

其次是開發商的ThemeRoller評論:

3)我們會看看那個。你是對的,這些類 應該由插件添加。現在雖然,它可能 不會傷害太多隻是將它們添加到您的標記,所以你 可以使用美樂家主題。不過,我們會檢查出來的。我認爲我們的選擇器可能是 ,而不是基於父UI標籤選擇器,但我認爲 我們試圖不在我們的選擇器中使用元素。考慮 它在待辦事項列表