我有一个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