code: function(input, datalist) {
  		var inputValue = getInputValue(input);
  
  		// Loop through the options
  		Array.prototype.slice.call(datalist.options, 0).forEach(function(option) {
  			// We're using .getAttribute instead of .dataset here for IE10
  			var dataOriginalvalue = option.getAttribute('data-originalvalue'),
  				originalValue = dataOriginalvalue || option.value;
  
  			// In case of that the original value hasn't been saved as data so far, do that now
  			if (!dataOriginalvalue) {
  				// We're using .setAttribute instead of .dataset here for IE10
  				option.setAttribute('data-originalvalue', originalValue);
  			}
  
  			// As we'd manipulate the value in the next step, we'd like to put in that value as either a label or text if none of those exist
  			if (!option.label && !option.text) {
  				option.label = originalValue;
  			}
  
  			/*
  			Check for whether the current option is a valid suggestion and replace its value by
  				- the current input string, as IE10+ and EDGE don't do substring, but only prefix matching
  				- followed by a unique string that should prevent any interferance
  				- and the original string, that is still necessary e.g. for sorting within the suggestions list
  			As the value is being inserted on users selection, we'll replace that one within the upfollowing inputInputListIE function
  			*/
  			option.value = isValidSuggestion(option, inputValue)
  				? inputValue + uniquePolyfillString + originalValue.toLowerCase()
  				: originalValue;
  		});
  	}
docs: On keypress check all options for that as a substring, save the original value as a data-attribute and preset that inputs value (for sorting) for all option values (probably as well enhanced by a token)