2011-09-20 57 views
0

我有一個對話框,它具有標籤和ValidationTextBoxs編程添加到對話框的分組。例如:名字:XXXXXXcss造型的dojo對話框

如果我沒有指定css格式,那麼標籤和ValidationTextBox就會很好地並排顯示。但是這些組合是互相擠壓而沒有間距的。

如果我爲高度,邊距,填充添加css。第一個分組很好,但是下面的標籤從當前ValidationTextBox的起始位置開始。不在下一行的開始。所以這個對齊全都不合時宜。

是的我已經嘗試單獨更改標籤和文本框的高度,填充和邊距。將
置於NO LUCK行末。我想過用span或div來包裝分組,但是得到相同的行爲並設置封閉div/span的大小。但沒有運氣。

可能有人解釋爲什麼下面的功能

function buildDialogField(fieldHolder, id, title, value, widgetId) 
{ 
    var newLabel, newField; 
    if (value === null) { 
     value = ""; 
    } 

    newLabel = "<div class='datadiv'><label for='" + id + "'>" + title + ":</label>"; 
    dojo.place(newLabel, fieldHolder); 
    newField = new dijit.form.ValidationTextBox({ 
     id: widgetId, 
     name: "myData", 
     value: value, 
     trim: true 
    }); 
    dojo.place(newField.domNode, fieldHolder); 
    dojo.place("</div>", fieldHolder); 
} 

生成下面的HTML標籤之後,但前個ValidationTextBox

<div class='datadiv'> 
    <label for='name'>me:</label> 
</div> 
<div id="widget_305" class="dijit dijitReset dijitInlineTable dijitLeft dijitTextBox dijitValidationTextBox" wairole="presentation" role="presentation" widgetid="305"> 

的結束的div出現。雖然這不是我編寫的!

感謝任何人幫助我清除我的困惑。

回答

1

您發送無效/不完整的HTML到dojo.place,並且它(或瀏覽器)正在爲您「完成」它。 dojo.place不只是elem.innerHTML += "..."的別名,但你似乎有點像對待它一樣。

我認爲它實際上應該是微不足道的解決這個代碼:

newLabel = "<div class='datadiv'><label for='" + id + "'>" + title + ":</label></div>"; 
dojo.place(newLabel, fieldHolder); 
newField = new dijit.form.ValidationTextBox({ 
    id: widgetId, 
    name: "myData", 
    value: value, 
    trim: true 
}); 
// the following is equivalent to dojo.place(newField.domNode, newLabel) 
newField.placeAt(newLabel); 

講解。 newLabel變量最終會接收到從傳遞給dojo.place的HTML內容生成的生成的頂級DOM節點。 (注意我通過添加結尾</div>完成了HTML字符串。)在這種情況下,實際上是div,而不是label - 因此您可能需要更改變量名稱。

然後,我們把小部件該專區 - 默認情況下,placeAt地方小部件爲指定節點的最後一個孩子(就像dojo.place(nodeToBePlaced, targetNode)將默認情況下)。

您可以通過傳遞另一個參數來告訴它 - 有關詳細信息,請參閱http://dojotoolkit.org/api/dijit/_Widget/placeAthttp://dojotoolkit.org/api/dojo/place

+0

newField.placeAt(newLabel);給我未定義的validationText框的值。 –