2011-11-03 21 views

Respuesta

1

tengo Nunca he visto ningún ejemplo en el que dijit.form.TextBox use la propiedad lable para mostrar realmente una etiqueta al lado del TextBox. La etiqueta siempre es un elemento de etiqueta o un nombre de texto separados.

Creo que el TextBox solo tiene esta propiedad porque lo hereda de dijit._Widget (de acuerdo con API docs).

Para añadir una etiqueta programmaticaly, simplemente añadir un textNode separada o elemento de etiqueta para DOMNode de la forma:

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 es un ejemplo completo en jsFiddle.

+1

La propiedad de la etiqueta '_Widget' proviene en realidad de una llamada a dojo.extend en' dojox/lay out/TableContainer'. Hice esta misma pregunta en la lista de correo del dojo http://dojo-toolkit.33424.n3.nabble.com/ValidationTextBox-label-property-td3287477.html. Tenga en cuenta que incluso con esta propiedad, no se mostrará en la página en ningún lugar automáticamente. – BuffaloBuffalo

+0

@BuffaloBuffalo Gracias por la información adicional. Miré en la fuente ayer y no pude encontrar la propiedad de la etiqueta definida en ningún lugar. – jumpnett

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

Dojo proporciona dojox.layout.TableContainer para emparejar automáticamente las etiquetas con los controles:

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 (gracias por la plantilla, @jumpnett)

+0

¡Esto es asombroso! Sin embargo, ya no creo que necesites la llamada de inicio al final. ¡Espero que esto ayude! – streetlight

0

lo tengo usando siguiente fragmento:

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