2016-11-27 61 views
1

我正在嘗試執行dojo日期。我正在嘗試從官方網站example,但它不起作用。我在這裏錯過了什麼嗎?Dojo DateTextBox不起作用

<!DOCTYPE html> 
<html> 
<head> 
    <script>dojoConfig = {async: true, parseOnLoad: false}</script> 
    <script src="resources/js/dojo-release-1.10.0/dojo/dojo.js"></script> 
    <script> 
     require(["dojo/parser", "dijit/form/DateTextBox"]); 
    </script> 
</head> 
<body> 
<div> 
    <label for="fromDate">From:</label> 
    <input data-dojo-id="myFromDate" type="text" name="fromDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
      onChange="myToDate.constraints.min = arguments[0];"/> 
    <label for="toDate">To:</label> 
    <input data-dojo-id="myToDate" type="text" name="toDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
      onChange="myFromDate.constraints.max = arguments[0];"/> 
</div> 
</body> 
</html> 
+0

與您的錯誤沒有任何關係,但* label *元素的* for *屬性應引用一個ID而不是名稱。 – RobG

+0

我其實不使用這些標籤元素。 – Eniss

回答

2

在你的代碼中dojoconfig您指定的parseOnload爲false,所以HTML不會被解析爲dijit組件。

的解決方案是將其設置爲true(call parser.parse())或創建如下的要求部分回調函數:

require(["dojo/parser", "dijit/form/DateTextBox"],function(parser,data){ 
    parser.parse(); 
}); 

那麼,對於風格,你必須導入dojo css theme並添加它的類body標籤,在下面的代碼我使用[claro][2]主題,所以我添加對身體是=><body class="claro">

例1:你可以使用parseOnload:true測試上面的完整的例子:

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dijit/themes/claro/claro.css"> 
 
    <script>dojoConfig = {async: true, parseOnLoad: true}</script> 
 
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> 
 
    <script> 
 
     require(["dojo/parser", "dijit/form/DateTextBox"]); 
 
    </script> 
 
    </head> 
 
    <body class="claro"> 
 
    <div> 
 
     <label for="fromDate">From:</label> 
 
     <input data-dojo-id="myFromDate" type="text" name="fromDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
 
      onChange="myToDate.constraints.min = arguments[0];"/> 
 
     <label for="toDate">To:</label> 
 
     <input data-dojo-id="myToDate" type="text" name="toDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
 
      onChange="myFromDate.constraints.max = arguments[0];"/> 
 
    </div> 
 
    </body> 
 
</html>

實施例2:通過設置parseOnload:false並使用回調函數+ parser.parse()

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dijit/themes/claro/claro.css"> 
 
    <script>dojoConfig = {async: true, parseOnLoad: false}</script> 
 
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> 
 
    <script> 
 
     require(["dojo/parser", "dijit/form/DateTextBox"],function(parser,data){ 
 
     \t parser.parse(); 
 
     }); 
 
    </script> 
 
</head> 
 
<body class="claro"> 
 
\t <div> 
 
\t  <label for="fromDate">From:</label> 
 
\t  <input data-dojo-id="myFromDate" type="text" name="fromDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
 
\t   onChange="myToDate.constraints.min = arguments[0];"/> 
 
\t  <label for="toDate">To:</label> 
 
\t  <input data-dojo-id="myToDate" type="text" name="toDate" data-dojo-type="dijit/form/DateTextBox" required="true" 
 
\t   onChange="myFromDate.constraints.max = arguments[0];"/> 
 
\t </div> 
 
</body> 
 
</html>

這一切。

+0

我終於明白如何正確使用dojo。謝謝你的真棒回答! – Eniss

+0

@歡迎您的光臨:),豎起大拇指:) –

相關問題