событие jQuery при нажатии опции HTML5 Datalist

что у меня сейчас:

Итак, у меня есть этот HTML5 Datalist с кучей опций в нем, и у меня есть 2 события. Один, когда пользователь вводит что-то, что соответствует чему-то массиву имен, который заполняет такие параметры, как "Рик Бросс" или "Джек Джонсон" (keyup). Другое событие, которое срабатывает, когда пользователь начинает вводить имя, появляется, пользователь стрелки вниз, и нажимает "enter" (изменить).

проблема:

I нужно событие для запуска, когда пользователь нажимает одну из раскрывающихся опций, прежде чем он вводит полное имя, и прежде чем объект будет размыт. Если пользователь нажимает один прямо сейчас, прежде чем имя будет полностью напечатано, события 2 запускают функцию только после того, как вход размыт.

Разметка:

<datalist id="potentials">
    <option value="Rick Bross">  
    <option value="Jack Johnson">  
    <option value="Rick Bross">  
    <option value="Rick Bross">   
</datalist>

Javascript события и функции:

window.checkModelData = function(ele)
{
    var name = $(ele).val().replace(" ", "");
    var mod = potentialModels[name];
    if(mod) {
        loadModelData(name);
    }
}

function loadModelData(name) {
    var mod = potentialModels[name];
    $("#address").val(potentialModels[name].address);
    $("#city").val(potentialModels[name].city);
    $("#state").val(potentialModels[name].state);
    $("#email").val(potentialModels[name].email);
    $("#phone").val(potentialModels[name].phone);
    $("#zip").val(potentialModels[name].zip);
}

$("#name").keyup(function(){

    window.checkModelData(this);

});
$("#name").change(function(){

    window.checkModelData(this);
});

3 ответов


использовать input событие вместо других событий. Он на самом деле предназначен для покрытия того, что вы хотите:

$("#name").bind('input', function () {
    window.checkModelData(this);
});

Я jsfiddle для вас, чтобы попробовать его.


вы также можете прослушать событие "select"в поле ввода.

$('#name').bind('select', function() {
    // handle input value change
});

для обработки события click only вот решение.

$("#book_search").bind('select', function () {
    alert("changed");   
});