当可观察属性获得新值时,IE浏览器会再次触发onchange事件



我有一个web应用程序,我使用Knockout js为客户端。我有一个网格,其中有3列,目录价格,折扣和客户价格。清单价格以四舍五入的形式显示,而折扣和客户价格需要以小数点后2位显示。此外,如果目录价格或折扣发生变化,客户价格应该自动计算。

为了实现这一点,我在目录价格上设置了onchange事件。我还使用了两个可观察对象,listPrice和displayedListPrice。List price用于存储未格式化的值,displayedListPrice用于存储格式化的值。

以下问题仅在IE中-在函数中我有一个语句,
this.displayedListPrice(格式(this.ListPrice));

上面的语句导致onchange事件再次触发。我怎样才能避免呢?

谢谢!

对不起,我离开了一段时间,没有注意到其他用户的评论。无论如何,这就是我所做的-

<div class="clmn7" ><input class="number"  data-bind="uniqueName: true,value: displayedListPrice, event: {focus: pac.partsPricing.Part.prototype.onFocusListPrice , blur: pac.partsPricing.Part.prototype.listPriceChanged}, css: { pricechange : listPrice()!=masterListPrice(), nopricechange:listPrice()==masterListPrice()} , attr: { title: masterSPrice}, enable: viewModel.program().isEnabled() && status()!='Submitted' "/></div>

因此,我没有使用onChange事件来捕获事件并进行处理,而是使用focus和blur事件来完成相同的功能。

您可以使用另一个事件作为值绑定,就像这样。

<input data-bind="value: someValue, valueUpdate: 'afterkeydown'" />

文档在这里:http://knockoutjs.com/documentation/value-binding.html

最新更新