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

时间:2011-12-28 21:10:40

标签: internet-explorer knockout.js

我有一个Web应用程序,我使用Knockout js作为客户端。我有一个网格,有3列,标价,折扣和客户价格。列表价格以舍入值显示,而折扣和客户价格需要以小数点后两位显示。此外,如果定价或折扣发生变化,客户价格应自动计算。

为实现这一目标,我在定价上有onchange事件。我还使用了两个observables,listPrice和displayedListPrice。列出存储未格式化值的价格和显示存储格式化值的displayedListPrice。

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

上述声明导致onchange事件再次触发。我该如何防止这种情况?

谢谢!

2 个答案:

答案 0 :(得分:1)

抱歉,我已经离开了一段时间,并没有注意到其他用户的评论。 无论如何,这就是我做的 -

<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事件来执行相同的功能。

答案 1 :(得分:0)

你可以使用另一个事件进行值绑定,就像这样。

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

您有以下文档:http://knockoutjs.com/documentation/value-binding.html