2013-04-16 23 views
17

我现在拥有的一切:jQuery的事件

所以我有这个HTML5 Datalist中有一堆在它的选择,我有2个事件触发。当用户输入一些与填充诸如“Rick Bross”或“Jack Johnson”(密码)等选项的名称数组相匹配的东西时。另一个事件在用户开始输入名称时弹出,弹出,用户向下箭头并点击“输入”(更改)。

问题:

我需要一个事件,当用户点击下拉选项之一开火之前,他种的全名了,以前的对象是模糊的。如果用户在完成输入名称之前单击一个,则只有在输入模糊时,这两个事件才会激活该功能。

标记:

<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); 
}); 

回答

16

使用,而不是其他事件input事件。它的实际设计来覆盖你想要什么:

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

我做了一个jsfiddle,您可以尝试一下。

0

您还可以在输入字段上聆听'select'事件。

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

这就是我一直在寻找的。 'input'也会在每次击键时触发,'change'只会在模糊时触发。 – julesj

+2

就我而言,'select'完全不会触发,只有'input'(每次击键)和'change'(按Enter或放松焦点后)。使用Jquery Mobile测试Chrome,Firefox。 –

+0

选择文本时是否触发'select'? – Toastrackenigma

-1

要处理单击事件,这里是解决方案。

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