Javascript Dojo Radiobutton-以编程方式检查其中一个
我有一组RadioButton dojo Dijit,我的任务是根据请求-响应json检查其中一个。Json将有一个与group1中的RadioButtons值对应的值 例如: { “组1”:“1” }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
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);