IE браузер снова запускает событие onchange, когда наблюдаемое свойство получает новое значение - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть веб-приложение, в котором я использую Knockout js для клиента.У меня есть сетка, которая имеет 3 столбца, прайс-лист, скидку и цену клиента.Прайс-лист отображается в округленных значениях, тогда как скидка и цена покупателя должны отображаться в двух десятичных разрядахКроме того, цена клиента должна рассчитываться автоматически при изменении цены по прейскуранту или скидки.

Для этого у меня есть событие onchange по прейскуранту.Также я использую, две наблюдаемые, listPrice и displayListPrice.Прайс-лист для хранения неформатированного значения и displayListPrice для хранения отформатированного значения.

Следующая проблема только в IE - внутри функции у меня есть оператор,
this.displayedListPrice (format (this.ListPrice));

Приведенный выше оператор вызывает событие onchange снова.Как я могу предотвратить это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 мая 2012

Извините, я ушел на некоторое время и не заметил комментариев других пользователей. В любом случае, это то, что я сделал -

<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 для захвата события и выполнения обработки, я использовал события фокуса и размытия для выполнения той же функции.

0 голосов
/ 07 марта 2012

Вы можете использовать другое событие для привязки значения, с чем-то вроде этого.

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

У вас есть документация здесь: http://knockoutjs.com/documentation/value-binding.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...