В приведенном ниже фрагменте javascript установлены 2 флажка, которые мне нужны, чтобы работать как переключатели.вот сгенерированный html
<span class="valueField">
<span>
<div class="dijit dijitReset dijitInline dijitCheckBox dijitCheckBoxChecked dijitChecked" wairole="presentation" role="presentation" widgetid="dijit_form_CheckBox_0">
<input id="dijit_form_CheckBox_0" class="dijitReset dijitCheckBoxInput" type="checkbox" dojoattachevent="onclick:_onClick" dojoattachpoint="focusNode" name="value" value="Y" tabindex="0" style="-moz-user-select: none;" aria-pressed="true">
</div>
<span>true</span>
<div class="dijit dijitReset dijitInline dijitCheckBox" wairole="presentation" role="presentation" widgetid="dijit_form_CheckBox_1">
<input id="dijit_form_CheckBox_1" class="dijitReset dijitCheckBoxInput" type="checkbox" dojoattachevent="onclick:_onClick" dojoattachpoint="focusNode" name="value" value="N" tabindex="0" style="-moz-user-select: none;" checked="false">
</div>
<span>false</span>
</span>
</span>
console.log показывает, что атрибуты и .checked изменяются правильно, однако флажок, отображаемый в браузере, не обновляется.
Я используюfirefox 5.
function booleanWidget(values, units, defaultValues)
{
var container, widget,onChangeFunction;
container = widgetContainer();
onChangeFunction = function (e)
{
var orig, value, siblingCheckboxes, i, thisNodeCheckedStatus;
orig = this.domNode.parentNode;
// has correct value for component that checked or unchecked.
thisNodeCheckedStatus = this.checked;
siblingCheckboxes = dojo.query( "input[type=checkbox]",orig);
console.log("TARGET CONDITION="+!thisNodeCheckedStatus);
for (i=0; i< siblingCheckboxes.length; i++)
{
console.log(siblingCheckboxes[i]);
console.log(" id="+siblingCheckboxes[i].id+ "siblingCheckboxes["+i+"]="+siblingCheckboxes[i]);
console.log("siblingCheckboxes["+i+"].checked="+siblingCheckboxes[i].checked);
console.log("siblingCheckboxes["+i+"].getAttribute(\"checked\")="+siblingCheckboxes[i].getAttribute("checked") );
// console.log("siblingCheckboxes["+i+"].get(\"checked\")="+siblingCheckboxes[i].get("checked") ); //siblingCheckboxes[i].get is not a function
console.log("siblingCheckboxes["+i+"].getAttribute(\"value\")="+siblingCheckboxes[i].getAttribute("value"));
//
if( this.id!=siblingCheckboxes[i].id )
{
console.log("targeting "+1);
siblingCheckboxes[i].parentNode.parentNode.attributes.isContentEditable=true;
// when I print out these console logs. I see that I am always processing correct sibling.
siblingCheckboxes[i].checked = !thisNodeCheckedStatus; // changes .checked but not attribute.checked.
siblingCheckboxes[i].setAttribute("checked", !thisNodeCheckedStatus); // changes attributes.checked but not .checked
// siblingCheckboxes[i].attr("checked", "!thisNodeCheckedStatus"); //gives me : siblingCheckboxes[i].attr is not a function
// siblingCheckboxes[i].set("checked",false); //gives me : siblingCheckboxes[i].set is not a function
}
console.log("**siblingCheckboxes["+i+"].checked="+siblingCheckboxes[i].checked);
console.log("**siblingCheckboxes["+i+"].getAttribute(\"checked\")="+siblingCheckboxes[i].getAttribute("checked") );
console.log(siblingCheckboxes[i].parentNode.parentNode);
}
validForm();
}
widget = new dijit.form.CheckBox({
name: 'value',
value: 'Y',
onChange: onChangeFunction
});
dojo.place(widget.domNode, container);
dojo.place("<span>true</span>", container);
if (!defaultValues || (defaultValues && defaultValues[0] === "Y")) {
widget.attr("checked", true);
}
widget = new dijit.form.CheckBox({
name: 'value',
value: 'N',
onChange: onChangeFunction
});
dojo.place(widget.domNode, container);
dojo.place("<span>false</span>", container);
if (defaultValues && defaultValues[1] === "N") {
widget.attr("checked", true);
}
return container;
}
Один из разработчиков вспоминает, что слышал о перезагрузке или обновлении, которое находится на стадии.Я пробовал перемещаться по дереву до узлов диапазона, но не могу найти метод обновления или перезагрузки.Любая мысль о том, как сказать браузеру обновить или перезагрузить промежутки.