2013-04-16 22 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"); 
});