2009-09-03 53 views
1

演示:http://3wcloud-com-provisioning-qa.appspot.com/testDijitDate道場/ Dijit的 - 文字框隱藏我的初始值

日曆彈出工作正常,並讓我選擇一個新的日期。 但是當頁面加載時,我看到日期08/15/2009閃爍一會兒,然後消失。 CSS或JS會默認隱藏它嗎?

dojo.require("dijit.form.DateTextBox");
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/resources/dojo.css" rel="stylesheet" /> 
 
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dijit/themes/claro/claro.css" rel="stylesheet" /> 
 
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js" djConfig="parseOnLoad:true"></script> 
 

 
<body class="claro"> 
 
    <input id="startDate" name="startDate" dojoType="dijit.form.DateTextBox" required=true value="08/15/2009" />

我還在學習使用螢火蟲爲好。我可以通過瀏覽DOM找出價值嗎?

螢火顯示:

<!-- <input type=text name=startDate size=10 value=""> --> 
 
<div wairole="presentation" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse" id="widget_startDate" class="dijit dijitReset dijitInlineTable dijitLeft dijitTextBox dijitDateTextBox" role="presentation" widgetid="startDate"> 
 
    <div style="overflow: hidden;"> 
 
    <div class="dijitReset dijitValidationIcon"> 
 
     <br/> 
 
    </div> 
 
    <div class="dijitReset dijitValidationIconText">Χ</div> 
 
    <div class="dijitReset dijitInputField"> 
 
     <input type="text" autocomplete="off" dojoattachpoint="textbox,focusNode" class="dijitReset" aria-valuenow="" aria-invalid="true" id="startDate" tabindex="0" aria-required="true" value="" /> 
 
     <input type="text" style="display: none;" name="startDate" /> 
 
    </div> 
 
    </div> 
 
</div>

回答

3

道場採用ISO8601/RFC3339風格的日期只在標記。在標記需要日期值的任何時候,你應該專門指定爲YYYY-MM-DD 當設置從JavaScript日期屬性,你應該使用一個Date對象:

dojo.require("dijit.form.DateTextBox"); 
 
dojo.addOnLoad(function() { 
 
    // make the date text box 
 
    var startDateTextBox = new dijit.form.DateTextBox({ 
 
    value: new Date(2009, 7, 15) 
 
    }, "startDate"); 
 
});
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/resources/dojo.css" rel="stylesheet" /> 
 
<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.3/dijit/themes/claro/claro.css" rel="stylesheet" /> 
 
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.3/dojo/dojo.js" djConfig="parseOnLoad:true"></script> 
 

 
<body class="claro"> 
 
    <input id="startDate" name="startDate" dojoType="dijit.form.DateTextBox" required=true value="2009-08-15" />

+0

正確!謝謝。這有點誤導性,因爲日期顯示爲mm/dd/yyyy,但它有道理。 – NealWalters 2009-09-03 18:36:33

0

它看起來像Dijit中清除出來的值時,文字框應用本身輸入字段。我不確定爲什麼當dijit控件綁定到輸入時值屬性不會保留。但是,DateTextBox在API中具有值屬性;您可以嘗試以編程方式在構造器選項中使用此值構造它,而不是使用dojoType屬性。我認爲它看起來是這樣的:

dojo.addOnLoad(function(){ 
    // make the date text box 
     var startDateTextBox = new dijit.form.DateTextBox({ 
      value: "08/15/2009" 
     }, "startDate"); 
}); 

HTH

+0

你也可以在構建小部件之後嘗試設置dijit.byId(「startDate」).value。 – RMorrisey 2009-09-03 05:14:33

+0

然後我會做這個「放置它」: dojo.byid(「plannedCompletionDateWrapper」)。innerHTML = plannedCompletionDate 我有兩個日期在我的窗體上,所以我想在第二個日期這種技術。 – NealWalters 2009-09-03 13:51:36

+0

您的語法是造成此錯誤: 「_8.getMonth是不是一個函數」 我做了一些細微的變化: \t VAR plannedCompletionDate =新dijit.form.DateTextBox({ 值:「09/02/2009 「 },」plannedCompletionDate「); dojo.byid(「plannedCompletionDateWrapper」)。innerHTML = plannedCompletionDate; – NealWalters 2009-09-03 13:59:15