2010-03-03 84 views
0

我有一些Dijit選項卡,在這些選項卡中我有一些Dojo文本框和字段。我的一些Dojo選項卡在加載頁面時加載,而有些加載僅在點擊時加載。Dojo Parseonload:false然後不加載Dojo模塊

我的問題是,我不能得到僅在單擊時加載的選項卡,以使用Dojo模塊。

它很難解釋,所以我做了一個簡單的例子來幫助。我已經儘可能多地包含了代碼,我認爲這可能會對結果產生任何影響。

的index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="chrome=1" /> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script> 

    <script type="text/javascript"> 
    dojo.require('dijit.layout.TabContainer'); 
    dojo.require('dijit.layout.ContentPane'); 
      dojo.require("dijit.form.DateTextBox"); 
    </script> 

    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 

</head> 

<body class="tundra"> 

Works Outside of a Tab: <input class="tundra" id="outsideworking" name="outsideworking" type="text" dojoType="dijit.form.DateTextBox"> 
<br><br><br> 
<div id="tab" dojoType="dijit.layout.TabContainer" style="width:50%;height:200px" > 

<div id="tab-working" dojoType="dijit.layout.ContentPane" selected="true" title="Loads on Page Load"> 
    Test working 
       <input class="tundra" id="working" name="working" type="text" dojoType="dijit.form.DateTextBox"> 
     </div> 

<div id="tab-notworking" dojoType="dijit.layout.ContentPane" title="Load On Click" preload="false" parseOnLoad="false" href="loadafter.php"> 
     </div> 

<div id="tab-simplenotworking" dojoType="dijit.layout.ContentPane" title="Load On Click with Simple File" preload="false" parseOnLoad="false" href="simple.php"> 
     </div> 

</div> 

</body> 
</html> 

loadafter.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="chrome=1" /> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script> 
<script type="text/javascript"> 
     dojo.require("dijit.form.DateTextBox"); 
</script> 

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 



</head> 

<body class="tundra"> 

Outside of a Tab 


    Not working here: 
       <input class="tundra" id="notworking" name="notworking" type="text" 

    dojoType="dijit.form.DateTextBox"> 

</body> 
</html> 

simple.php

<input class="tundra" id="simplenotworking" name="simplenotworking" type="text" dojoType="dijit.form.DateTextBox"> 

是任何人都能夠幫點我在正確的方向?

感謝 gggggggg

回答

4

總之,如果您已設置parseOnLoad爲假,你需要自己解析HTML片段。而對於你的標籤頁,如果你點擊了一個標籤,你可能需要手動解析標籤頁。

例如:

<div id='a'><input id="simplenotworking" name="simplenotworking" type="text" dojoType="dijit.form.DateTextBox"> </div>

您可以使用dojo.parser.parse(dojo.byId("a"))呈現小部件。

順便說一句,你不需要在dijit小部件的每個地方都附加苔原類,它只需要放在body標籤處。

0

嘗試更復雜的選擇器,如dojo.query,以查明您想要的確切Dom。

0

,如果你想選擇解析器dijit中你需要的dijit

dojo.parser.parse(dijit.byId("a")) 
如果你使用Dojo

做到這一點,它會選擇DOM節點。 如果您使用dijit,它會選擇小工具