I don't know if this is an issue with React or IE11 but when an the input initially contains an EN-dash (8211) it fires the change event. 
JSFiddle http://jsfiddle.net/uH539/10/

it('should execute custom event plugin listening behavior', function() {
      var SimpleEventPlugin = require('SimpleEventPlugin');
      SimpleEventPlugin.didPutListener = jest.genMockFn();
      SimpleEventPlugin.willDeleteListener = jest.genMockFn();
      var container = document.createElement('div');
      ReactDOM.render(
        <div onClick={() => true} />,
        container
      );
      expect(SimpleEventPlugin.didPutListener.mock.calls.length).toBe(1);
      ReactDOM.unmountComponentAtNode(container);
      expect(SimpleEventPlugin.willDeleteListener.mock.calls.length).toBe(1);
    });
    it('should handle null and missing properly with event hooks', function() {
      var SimpleEventPlugin = require('SimpleEventPlugin');
      SimpleEventPlugin.didPutListener = jest.genMockFn();
      SimpleEventPlugin.willDeleteListener = jest.genMockFn();
      var container = document.createElement('div');
      ReactDOM.render(<div onClick={false} />, container);
      expect(SimpleEventPlugin.didPutListener.mock.calls.length).toBe(0);
      expect(SimpleEventPlugin.willDeleteListener.mock.calls.length).toBe(0);
      ReactDOM.render(<div onClick={null} />, container);
      expect(SimpleEventPlugin.didPutListener.mock.calls.length).toBe(0);
      expect(SimpleEventPlugin.willDeleteListener.mock.calls.length).toBe(0);
      ReactDOM.render(<div onClick={() => 'apple'} />, container);
      expect(SimpleEventPlugin.didPutListener.mock.calls.length).toBe(1);
      expect(SimpleEventPlugin.willDeleteListener.mock.calls.length).toBe(0);
      ReactDOM.render(<div onClick={() => 'banana'} />, container);
      expect(SimpleEventPlugin.didPutListener.mock.calls.length).toBe(2);
      expect(SimpleEventPlugin.willDeleteListener.mock.calls.length).toBe(0);