单击HTML5 Datalist选项时的jQuery事件

时间:2013-04-16 02:25:35

标签: 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>

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 个答案:

答案 0 :(得分:18)

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

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

我为你做了jsfiddle尝试。

答案 1 :(得分:0)

您还可以在输入字段上收听“选择”事件。

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

答案 2 :(得分:-1)

此处处理单击事件是解决方案。

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