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

时间:2015-11-21 00:49:29

标签: javascript json dojo dijit.form

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

<input type="radio" data-dojo-type="dijit/form/RadioButton" name="group1" value="1"/> <label>1</label>
<input type="radio" data-dojo-type="dijit/form/RadioButton" name="group1" value="2"/> <label>2</label>
<input type="radio" data-dojo-type="dijit/form/RadioButton" name="group1" value="3"/> <label>3</label>

我该如何以良好的方式做到这一点?

2 个答案:

答案 0 :(得分:3)

如果您的RadioButton小部件恰好在dijit/form/Form范围内,到目前为止最方便的方法是设置表单value,因为dijit/form/_FormMixin& #39; s值setter会自动将值映射到相应的RadioButton小部件。

form.set('value', { group1: '1' });

(即使表单有其他字段,使用只有一个属性的对象调用set('value')只会更新表单中的那一个字段。)

除非您选择此选项(如果您不在dijit/form/Form并且因某些原因无法使用),您可以执行类似于trincot建议的内容,但是因为您&#39 ;重新使用小部件,您需要设置适当的小部件checked属性,而不仅仅是输入节点:

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

这里有一个fiddle展示了两种方法。

答案 1 :(得分:-1)

以下是使用class="btn btn-success btn-lg"

执行此操作的方法
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是相应的对象。此代码遍历该对象的属性(例如&#34; group1&#34;),然后通过JSONcss找到带有name选择器的元素,然后设置找到的元素的value属性(如果有)。

我把它放在fiddle中,按下按钮后调用checked函数。