JSFiddle - React, Tailwind, and code Playground
by Paul Kutakov
HTML
<input type="text" data-bind="value: Data">
JavaScript
ko.extenders.checkValue=function (value, condition){
var result=ko.computed({
read: value,
write: function (newValue){
var current=value();
var canSave=true;
//for sake of example - we are getting array as string
if (typeof newValue=="string")
newValue=newValue.split(",")
ko.utils.arrayForEach(newValue, function(ch) {
if (ch>condition)
canSave=false;
});
if (canSave)
{
value(newValue);
value.notifySubscribers(newValue);
}
else
value.notifySubscribers(value());
}
}).extend({ notify: 'always'});
result(value());
//return the new computed observable
return result;
}
function AppViewModel(data)
{
self=this;
self.Data=ko.observableArray(data).extend({ checkValue: 100});
}
var mydata=[10, 11];
ko.applyBindings(new AppViewModel(mydata));