下面的代码在Firefox以外的所有浏览器中都能正常运行。
首先单击复选框,它会显示正确的值,但在Firefox中,它仅在第二次选中复选框后显示正确的值。
如果我将checked: checked
更改为checked: checked()
,那么在第一次点击后,它会在Firefox中显示正确的值,但enable:
无法正常工作且无法启用领域。
<input type="checkbox"
data-bind="attr: { id: eId, title: description },
checked: checked,
enable: $root.enableInput,
event: { change: function (newValue) { if (!newValue.checked()) { var TotalValue = !Helper.IsUndefinedOrNull($parent.totalValue()) ? Number($parent.totalValue().toString().replace(/[^0-9\.]+/g, '')) : 0; chargeTypeName() == 'Percentage' ? testChargeAmount(chargeAmountValue() * totalValue) : testChargeAmount(chargeAmountValue()); } } }" />
<label data-bind="text: displayText, attr: { 'for': eId, title: description }"></label>
<input type="text" class="input_text currency"
data-bind="value: testChargeAmount, precision: 2, attr: { title: description },
enable: checked(), css: { eAmountDisabled: !checked()} " />
<input type="text" class="input_text exceptionText"
data-bind="value: exceptionText,
enable: (checked() && $root.enableInput)" />
答案 0 :(得分:0)
event
绑定将取消事件的默认操作。如果您不想取消默认操作,则必须从处理函数中return true
:
event: {
change: function() {
....
return true;
}
}
参考:http://knockoutjs.com/documentation/event-binding.html#note-3-allowing-the-default-action