我有一个Web应用程序,我使用Knockout js作为客户端。我有一个网格,有3列,标价,折扣和客户价格。列表价格以舍入值显示,而折扣和客户价格需要以小数点后两位显示。此外,如果定价或折扣发生变化,客户价格应自动计算。
为实现这一目标,我在定价上有onchange事件。我还使用了两个observables,listPrice和displayedListPrice。列出存储未格式化值的价格和显示存储格式化值的displayedListPrice。
以下问题仅在IE中 - 在函数内部我有一个声明,
this.displayedListPrice(格式(this.ListPrice));
上述声明导致onchange事件再次触发。我该如何防止这种情况?
谢谢!
答案 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