2015-11-21 2 views
0

У меня есть группа RadioJutton dojo dijits, и моя задача - проверить один из них на основе ответа на запрос json. Json будет иметь значение, которое соответствует одному значению Radiobuttons в group1 , например: { «group1»: «1» }Dojo Radiobutton - проверьте один из них программно

<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> 

Как это сделать в хорошем смысле?

ответ

3

Если виджеты RadioButton случается в dijit/form/Form, самый удобный способ, безусловно, сделать это было бы, установив форму-х value, так как dijit/form/_FormMixin значение сеттер «s будет автоматически отображать значение соответствующего RadioButton виджета.

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

(Даже если форма имеет другие поля, призывающих set('value') с объектом только одно свойство будет обновлять только, что одно поле в форме.)

Запрещая эту опцию (если вы не в a dijit/form/Form и не могут использовать их по какой-либо причине), вы можете сделать что-то вроде предложенного trincot, но поскольку вы используете виджеты, вам необходимо установить соответствующее свойство виджета checked, а не только входной узел напрямую:

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

Вот fiddle, демонстрирующий оба подхода.

+0

Спасибо Кен и Тринкот. Предложение Кена работало как шарм. Я использовал подход к определению значения свойства формы. Я также пробовал использовать последний подход, и это не сработало для моей конкретной ситуации. Причина в том, что у меня есть коллекция этих виджетов, поэтому есть несколько групп радиолюбителей с именем = group1. Таким образом, запрос dojo возвращает кучу этих виджетов назад для комбинации имени и значения. – aayushkr

-1

Вот способ сделать это с 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»), а затем находит элемент с селектором css на name и value, а затем устанавливает атрибут checked найденного элемента, если таковой имеется.

Я положил это в fiddle, где функция test вызывается после нажатия кнопки.

Смежные вопросы