Javascript Dojo Radiobutton-以编程方式检查其中一个

Javascript Dojo Radiobutton-以编程方式检查其中一个,javascript,json,dojo,dijit.form,Javascript,Json,Dojo,Dijit.form,我有一组RadioButton dojo Dijit,我的任务是根据请求-响应json检查其中一个。Json将有一个与group1中的RadioButtons值对应的值 例如: { “组1”:“1” } 1 2. 3. 如何以一种好的方式做到这一点?下面是一种使用dojo实现这一点的方法 function test(json) { var obj = dojo.fromJson(json); for (prop in obj) { dojo.query('inp

我有一组RadioButton dojo Dijit,我的任务是根据请求-响应json检查其中一个。Json将有一个与group1中的RadioButtons值对应的值 例如: { “组1”:“1” }

1
2.
3.

如何以一种好的方式做到这一点?

下面是一种使用dojo实现这一点的方法

function test(json) {
    var obj = dojo.fromJson(json);
    for (prop in obj) {
        dojo.query('input[name="' + prop + '"][value="' + obj[prop] + '"]').attr('checked', 'checked');
    }
}
其中,
json
是您收到的字符串,
obj
是从
json
解码后的相应对象。此代码遍历该对象的属性(例如“group1”),然后通过
name
value
查找带有
css
选择器的元素,然后设置所查找元素的
checked
属性(如果有)


我把它放在a中,按下按钮后调用
测试
函数。

如果您的RadioButton小部件恰好位于
dijit/form/form
中,到目前为止最方便的方法是设置表单的
值,由于dijit/form/_FormMixin的值设置程序将自动将值映射到相应的RadioButton小部件

form.set('value', { group1: '1' });
(即使表单有其他字段,使用只有一个属性的对象调用
set('value')
,也只会更新表单中的一个字段。)

如果不使用此选项(如果您不在dijit/form/form
中,并且由于某种原因无法使用),您可以按照trincot的建议进行操作,但由于您使用的是小部件,因此需要设置相应小部件的
checked
属性,而不仅仅是直接设置输入节点的属性:

registry.getEnclosingWidget(query('[name=group1][value=1]')[0]).set('checked', true);

下面是一个演示这两种方法的示例。

谢谢肯和特林科特。肯的建议很管用。我使用了设置表单值属性的方法。我也尝试了后一种方法,但它不适合我的具体情况。原因是我有一个这些小部件的集合,所以有几组名为group1的单选按钮。因此,dojo查询返回一组这些小部件作为名称/值组合。
registry.getEnclosingWidget(query('[name=group1][value=1]')[0]).set('checked', true);