http://stackoverflow.com/questions/42421506/how-to-change-dropdown-value-to-previous-value-if-certain-condition-is-not-match (Event)
by jlspake
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>
<div>
<Select data-bind="options: Options, optionsCaption: '', event: {change: onChange}">
</Select>
</div>
JavaScript
var viewModel = function(){
var self = this;
self.Options = [1, 2, 3, 4];
self.selectedOption = ko.observable();
self.selectedOption.subscribe(function(newValue){
console.log(newValue);
});
self.isOptionValid = function(value){
return (value > 2);
}
self.onChange = function(viewModel, event){
var target = event.target;
var newValue = $(target).val();
if(self.isOptionValid(newValue)){
self.selectedOption(newValue);
}else{
$(target).val(self.selectedOption()); //reset to previous value
}
}
}
ko.applyBindings(new viewModel());