Dojo 单选按钮 - 以编程方式检查其中之一
Dojo Radiobutton - check one of them programatically
我有一组 RadioButton dojo dijits,我的任务是根据请求响应检查其中一个 json。 Json 将有一个对应于 group1 中 RadioButtons 值之一的值
例如:
{
"group1":“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>
我怎样才能很好地做到这一点?
这里有一种使用 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
找到的元素的属性,如果有的话。
我把它放在 fiddle 中,按下按钮后会调用 test
函数。
如果您的 RadioButton 小部件恰好位于 dijit/form/Form
内,到目前为止最方便的方法是设置表单的 value
,因为 dijit/form/_FormMixin
的值setter 会自动将值映射到适当的 RadioButton 小部件。
form.set('value', { group1: '1' });
(即使表单有其他字段,使用只有一个 属性 的对象调用 set('value')
也只会更新表单中的那个字段。)
除了这个选项(如果你不在 dijit/form/Form
中并且由于某种原因不能使用它),你可以像 trincot 建议的那样做,但是因为你使用的是小部件,你需要设置适当的widget的checked
属性,而不仅仅是输入节点的直接:
registry.getEnclosingWidget(query('[name=group1][value=1]')[0]).set('checked', true);
这里 fiddle 展示了这两种方法。
我有一组 RadioButton dojo dijits,我的任务是根据请求响应检查其中一个 json。 Json 将有一个对应于 group1 中 RadioButtons 值之一的值 例如: { "group1":“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>
我怎样才能很好地做到这一点?
这里有一种使用 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
找到的元素的属性,如果有的话。
我把它放在 fiddle 中,按下按钮后会调用 test
函数。
如果您的 RadioButton 小部件恰好位于 dijit/form/Form
内,到目前为止最方便的方法是设置表单的 value
,因为 dijit/form/_FormMixin
的值setter 会自动将值映射到适当的 RadioButton 小部件。
form.set('value', { group1: '1' });
(即使表单有其他字段,使用只有一个 属性 的对象调用 set('value')
也只会更新表单中的那个字段。)
除了这个选项(如果你不在 dijit/form/Form
中并且由于某种原因不能使用它),你可以像 trincot 建议的那样做,但是因为你使用的是小部件,你需要设置适当的widget的checked
属性,而不仅仅是输入节点的直接:
registry.getEnclosingWidget(query('[name=group1][value=1]')[0]).set('checked', true);
这里 fiddle 展示了这两种方法。