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());