2012-05-09 288 views
1

我有一個json {"Name":"@@","Phone":"9999999999","EMail":"[email protected]"} 我想填充從這個對象的值到一個窗體...如何做到這一點? 這裏是形式從JSON填充表單(dojo)

<form data-dojo-type="dojox.form.Manager" name="form" id="form" method="post"> 
<tr><td> 
<input type="text" required="true" name="Name" id="Name" data-dojo-type="dijit.form.ValidationTextBox"/></tr></td> 
<tr><td> 
<input type="text" name="Phone" id="Phone" data-dojo-type="dijit.form.ValidationTextBox"/></tr></td> 
<tr><td> 
<input type="text" name="Email" id="Email" data-dojo-type="dijit.form.ValidationTextBox"/></tr></td> 
</form> 

謝謝

回答

0

我會使用一個簡單的JavaScript循環在JSON。

var data = JSON.parse(jsonDataString); 
for (index in data) { 
    var el = document.getElementById(index); 
    if (el) 
     el.value = data[el]; 
} 
+0

這將在某些情況下工作,但它直接在DOM節點上設置值,繞過Dojo小部件的任何值的邏輯。所以,你可能會繞過驗證警告,並在小部件的所有其他的東西。 –

0

dojox.form.Manager包括dijit.form._FormMixin其提供.setValues功能。 你應該能夠調用form.setValues與JSON對象。這樣做的好處是,它會正確地調用每個正常的小部件的.set("value", ...)以確保Dijit的小部件有新的價值觀。簡單地分配可以及繞過邏輯的Dijit的DOM節點上的「.value」屬性。

有上_FormMixin等效.getValues過,這正好相反。

2

要設置格式值試試這個: -

var obj = {"Name":"@@","Phone":"9999999999","EMail":"[email protected]"}; 
dijit.byId('form').set('value',obj); 

我知道它的晚,但它的工作: -