2012-05-09 151 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); 

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