2011-11-03 116 views

回答

1

我已經從未見過dijit.form.TextBox使用lable屬性在TextBox旁邊實際顯示標籤的任何示例。標籤始終是單獨的標籤元素或文本節點。

我相信TextBox只具有此屬性,因爲它從dijit._Widget繼承它(根據API docs)。

要programmaticaly添加一個標籤,只是一個單獨的textnode或標籤元素追加到窗體的れ:

dojo.require("dijit.form.Form"); 
dojo.require("dijit.form.TextBox"); 

function buildForm() { 
    var form = new dijit.form.Form({ 
    }, dojo.doc.createElement('div')); 

    var textBox = new dijit.form.TextBox({ 
     name: 'text' 
    }, dojo.doc.createElement('input')); 

    document.body.appendChild(form.domNode); 
    form.domNode.appendChild(dojo.doc.createTextNode("My Label ")); 
    form.domNode.appendChild(textBox.domNode); 
} 

dojo.addOnLoad(buildForm); 

Here上的jsfiddle一個完整的例子。

+1

'_Widget'的標籤屬性實際上來自'dojox/lay中的dojo.extend調用出/ TableContainer'。我在dojo郵件列表http://dojo-toolkit.33424.n3.nabble.com/ValidationTextBox-label-property-td3287477.html上問了同樣的問題。請注意,即使使用此屬性,它也不會在任何地方自動顯示。 – BuffaloBuffalo

+0

@BuffaloBuffalo感謝您的補充見解。我昨天查看了源代碼,實際上找不到在任何地方定義的標籤屬性。 – jumpnett

0
yourPlaceholder.domNode.appendChild(dojo.doc.createTextNode("Label Text")); 
yourPlaceholder.addChild(yourTextBox); 
10

Dojo提供dojox.layout.TableContainer用於控制自動配對標籤:

var layout = new dojox.layout.TableContainer({ 
    showLabels: true, 
    orientation: "horiz" 
}); 

var textBox = new dijit.form.TextBox({ 
    name: 'text', 
    title: 'My Label' 
}); 

layout.addChild(textBox); 
layout.placeAt(form.containerNode); 
layout.startup(); 

jsfiddle(爲模板,@jumpnett感謝)

+0

這太棒了!但是,我認爲你不需要最終的啓動電話了。希望這可以幫助! – streetlight

0

我用下面的代碼片斷得到它:

dojo.place('<label for="field" > Label Name </label>',dojo.byId('TextField_Id'),'before');