2011-11-03 32 views

Trả lời

1

Tôi đã không bao giờ thấy bất kỳ ví dụ nào nơi dijit.form.TextBox sử dụng thuộc tính lable để thực sự hiển thị nhãn bên cạnh TextBox. Nhãn luôn là phần tử nhãn riêng hoặc mã văn bản.

Tôi tin rằng TextBox chỉ có thuộc tính này vì nó thừa kế nó từ dijit._Widget (theo số API docs).

Để thêm một nhãn programmaticaly, chỉ cần thêm một textnode riêng biệt hoặc thành phần nhãn để domNode của hình thức:

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 là một ví dụ đầy đủ về jsfiddle.

+1

Thuộc tính nhãn của '_Widget' thực sự xuất phát từ cuộc gọi dojo.extend trong' dojox/lay ra/TableContainer'. Tôi đã hỏi cùng một câu hỏi này trên danh sách gửi thư dojo http://dojo-toolkit.33424.n3.nabble.com/ValidationTextBox-label-property-td3287477.html. Lưu ý rằng ngay cả với thuộc tính này, nó sẽ không được hiển thị trên trang bất kỳ nơi nào một cách tự động. – BuffaloBuffalo

+0

@BuffaloBuffalo Cảm ơn bạn đã hiểu rõ hơn. Tôi nhìn vào nguồn ngày hôm qua và không thể tìm thấy thuộc tính nhãn được định nghĩa ở bất kỳ đâu. – jumpnett

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

Dojo cung cấp dojox.layout.TableContainer cho tự động ghép nối nhãn với các điều khiển:

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 (nhờ cho mẫu, @jumpnett)

+0

Điều này thật tuyệt vời! Tuy nhiên, tôi không nghĩ rằng bạn cần cuộc gọi khởi động ở cuối nữa. Hi vọng điêu nay co ich! – streetlight

0

tôi đã nhận nó sử dụng đoạn mã sau:

dojo.place('<label for="field" > Label Name </label>',dojo.byId('TextField_Id'),'before'); 
Các vấn đề liên quan