Я попытался реализовать приведенные ниже предложения, но ни один из них не вызывал требуемой реакции каждый раз при обновлении значения. Это может быть связано с моей реализацией, поскольку я новичок в Knockout.
У меня есть наблюдаемое (количество), которое привязано к TextBoxFor.
@Html.TextBoxFor(m => m.Amount, new { type = "number", data_bind = "value: Amount" })
При вводе значения его необходимо проверить, чтобы убедиться, что оно не превышает 999999. В дополнение к этому, если значение меньше 50, его необходимо установить на 50. Эти проверки необходимо выполнять каждый раз, когда ' Сумма меняется.
var viewModel = {
Amount: ko.observable().extend({numeric: 0, max: 999999})
};
Я пытался реализовать решения (в ответе на мой предыдущий пост), но не смог заставить их работать.
Лучшее, что я придумал, это создать вычисление следующим образом. Это проверяет входное значение и правильно обновляет его с первой попытки. Последующие изменения значения не вызывают изменения на экране, но, выполняя код, похоже, обновляют значение ViewModel.Amount.
@Html.TextBoxFor(m => m.Amount, new { type = "number", data_bind = "value: amountMin" })
quoteVehicleViewModel.VehicleMileage = ko.observable(0);
viewModel.amountMin = ko.computed({
read: function () {
return viewModel.Amount();
},
write: function (value) {
if (value < 50) {
viewModel.Amount(50);
}
}
}).extend({ numeric: 0, max: 999999 });
** "viewModel.Amount()", введенное в консоли, показывает значение 1000, но значение на экране по-прежнему отображается как введенное значение.
Любая помощь с благодарностью получена
Джон
ko.validation.registerExtenders();
, которую я не вставил в фактический фрагмент-расширитель в ответе. Вы включили эту строку в свой код? - person Joseph Gabriel   schedule 22.04.2013