2011-11-03 24 views
5

nasıl (programlı) bir metin kutusuna bir etiket eklerim etiket ekleme:bir metin kutusu (programlı)

el = new dijit.form.TextBox({label: '...' }); 
form.containerNode.appendChild(el.domNode); 

bu (1.6 dojo)

cevap

1

Ben ettik çalışmak görünmüyor hiçbir zaman, dijit.form.TextBox'ın TextBox'un yanında bir etiket göstermesi için etikel özelliğini kullandığı herhangi bir örnek görmedim. Etiket her zaman ayrı bir etiket elemanı veya textnode'dur.

TextBox'ın yalnızca bu özelliğe sahip olduğuna inanıyorum çünkü dijit._Widget öğesinden devralır (API docs'a göre).

sadece formun DOMNode için ayrı textnode veya etiket eleman eklemek, programmaticaly etiket eklemek için:

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 tam bir örnektir.

+1

'_Widget' etiket özelliği aslında dojox/lay dosyasında dojo.extend çağrısından geliyor dışarı/TableContainer'. Aynı soruyu dojo posta listesine http://dojo-toolkit.33424.n3.nabble.com/ValidationTextBox-label-property-td3287477.html adresinden sordum. Bu özellikte bile, sayfada otomatik olarak görüntülenmeyeceğini unutmayın. – BuffaloBuffalo

+0

@BuffaloBuffalo Eklenen bilgiler için teşekkürler. Dün kaynağa baktım ve her yerde tanımlanmış etiket özelliğini bulamadım. – jumpnett

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

Dojo otomatik kontrolleri ile etiketleri eşleştirme için dojox.layout.TableContainer sağlamaktadır:

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 (şablon, @jumpnett için teşekkürler)

+0

Bu harika! Ancak, artık başlangıçta aramaya ihtiyacınız olduğunu düşünmüyorum. Bu yardımcı olur umarım! – streetlight

0

aşağıdaki parçacığını kullanarak aldım:

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