JSFiddle - React, Tailwind, and code Playground

HTML

<form id="myForm">
    <input list="answers" id="answer">
    <datalist id="answers">
        <option data-value="42">The answer</option>
        <option data-value="1337">Elite</option>
        <option data-value="69">Dirty</option>
        <option data-value="3">Pi</option>
    </datalist>
    <input type="hidden" name="answer" id="answer-hidden">
    <input type="submit">
</form>
        
        
        

<p>Submitted value (for debugging):</p>
<pre id="result"></pre>

JavaScript

$('input[list]').on('input', function(e) {
    var $input = $(e.target),
        $options = $('#' + $input.attr('list') + ' option'),
        $hiddenInput = $('#' + $input.attr('id') + '-hidden'),
        label = $input.val();

    $hiddenInput.val(label);

    for(var i = 0; i < $options.length; i++) {
        var $option = $options.eq(i);

        if($option.text() === label) {
            $hiddenInput.val( $option.attr('data-value') );
            break;
        }
    }
});

// For debugging purposes
$("#myForm").on('submit', function(e) {
    $('#result').html( $('#answer-hidden').val() );
    e.preventDefault();
});