<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" href="style.css" />
    <script data-require="jquery" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
    <input id="txtBrowser" list="browsers" name="browser" />
    <datalist id="browsers">
      <option value="1">Internet Explorer</option>
      <option value="2">Firefox</option>
      <option value="3">Chrome</option>
      <option value="4">Opera</option>
      <option value="5">Safari</option>
    </datalist>
    <button id="btnShowResult">Mostrar resultado</button>
    <br />
    <span id="spnResult"></span>
  </body>

</html>
$(document).ready(function() {

  $('#btnShowResult').click(function(){
    //Obtengo el id del data value
    var idValue = $('#txtBrowser').prop("data-value")
    
    //Lo muestro en un span
    $('#spnResult').text(idValue);
  });
  
  
  $("#txtBrowser").bind('input', function () {
    //Obtengo el identificador que automaticamente el 
    //data list pone en el input
    var dataImputBefore = $("#txtBrowser").val();
    
    //Lo seteo en un atributo del input para usarlo mas tarde
    $("#txtBrowser").prop('data-value',dataImputBefore);
    
    //Busco en el datalist el option correspondiente al id que se obtuvo
    var elementOption = $("#browsers option[value='"+dataImputBefore+"']")
    
    //Como ya guarde el id en una propiedad data-value del input
    //ya puedo poner el valor que quiero mostrar realmente en el input
    //este valor lo obtengo del option que encontre en el paso anterior.
    //Lo tengo en la propiedad text
    $("#txtBrowser").val(elementOption.text());
  });
  
});
/* Put your css in here */

h1 {
  color: red;
}