2011-11-03 13 views

risposta

1

ho mai visto alcun esempio in cui dijit.form.TextBox utilizza la proprietà labile per visualizzare effettivamente un'etichetta accanto al TextBox. L'etichetta è sempre un elemento etichetta separato o un textnode.

Credo che TextBox abbia questa proprietà solo perché la eredita da dijit._Widget (in base allo API docs).

Per aggiungere un'etichetta programmaticaly, basta aggiungere un TextNode separata o elemento etichetta DOMNode della maschera:

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 è un esempio completo su jsfiddle.

+1

La proprietà dell'etichetta '_Widget' proviene effettivamente da una chiamata dojo.extend in' dojox/lay out/TableContainer'. Ho fatto questa stessa domanda sulla mailing list dojo http://dojo-toolkit.33424.n3.nabble.com/ValidationTextBox-label-property-td3287477.html. Nota che anche con questa proprietà, non verrà visualizzata automaticamente sulla pagina. – BuffaloBuffalo

+0

@BuffaloBuffalo Grazie per l'intuizione aggiunta. Ho guardato nella fonte ieri e non sono riuscito a trovare la proprietà dell'etichetta definita da nessuna parte. – jumpnett

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

Dojo fornisce dojox.layout.TableContainer per l'accoppiamento automaticamente le etichette con i controlli:

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 (grazie per il modello, @jumpnett)

+0

Questo è fantastico! Tuttavia, non penso che tu abbia più bisogno della chiamata di avvio alla fine. Spero che questo ti aiuti! – streetlight

0

ho ottenuto usando seguente frammento di codice:

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