单击HTML5 Datalist选项时的jQuery事件

Ric*_*oss 18 jquery html5 option html-datalist

我现在拥有的:

所以我有这个HTML5 Datalist,里面有很多选项,我有2个事件被触发.一个当用户键入一些匹配某些名称的东西时,这些名称填充了诸如"Rick Bross"或"Jack Johnson"(keyup)之类的选项.当用户开始键入名称时会触发另一个事件,它会弹出,用户向下箭头,然后点击"输入"(更改).

问题:

当用户点击其中一个下拉选项时,我需要触发一个事件,在他输入全名之前,以及在对象模糊之前.如果用户在完全输入名称之前立即单击一个,则只有输入模糊后,2个事件才会触发该功能.

标记:

<datalist id="potentials">
    <option value="Rick Bross">  
    <option value="Jack Johnson">  
    <option value="Rick Bross">  
    <option value="Rick Bross">   
</datalist>
Run Code Online (Sandbox Code Playgroud)

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);
});
Run Code Online (Sandbox Code Playgroud)

lik*_*eit 17

使用input事件而不是其他事件.它实际上是为了满足您的需求而设计的:

$("#name").bind('input', function () {
    window.checkModelData(this);
});
Run Code Online (Sandbox Code Playgroud)

我为你试了一下jsfiddle.