已检查的事件在Firefox中无法正常运行

时间:2014-10-05 20:20:50

标签: javascript firefox knockout.js checked

下面的代码在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)" />

1 个答案:

答案 0 :(得分:0)

event绑定将取消事件的默认操作。如果您不想取消默认操作,则必须从处理函数中return true

event: {
    change: function() {
        ....
        return true;
    }
}

参考:http://knockoutjs.com/documentation/event-binding.html#note-3-allowing-the-default-action