2016-03-24 64 views
0

我有一個<div>contenteditable=true。我附上一個模糊事件,因此輸入被記錄下來,一旦用戶離開現場:專注於輸入和自動完成

$(document).on('#my_div'n 'blur', function() {....... 

我重視這個領域的一個jQuery自動完成:

$('#my_div').autocomplete({ source : emails_directory }); 

自動完成運作良好,並在該領域時填寫點擊。

這裏的問題是我的模糊事件只記錄了我在觸發自動完成之前鍵入的第一個字母。

如果未使用自動完成功能,或者使用自動完成功能的值,應該使用什麼事件來記錄字段值。

例如: 我想從自動完成中獲取[email protected]。 我輸入'te',完整的電子郵件顯示在自動完成中。 我在自動完成列表中選擇它,並在字段中填充它。 我的模糊事件記錄'te'。我不想這樣,並想記錄[email protected]而不是

例2: 我想輸入一個不在自動完成源中的值。 我輸入[email protected],沒有自動完成顯示。 模糊記錄完整值。

回答

1

您可以在模糊時觸發關於ENTER的keydown事件。所以,如果存在,你可以得到自動完成值:

$(document).on('#my_div', 'blur', function() { 
     var keyEvent = $.Event("keydown"); 
     keyEvent.keyCode = $.ui.keyCode.ENTER; 
     $(this).trigger(keyEvent); 
     ...... 
}); 

,也不要忘了自動對焦:

$('#my_div').autocomplete(autoFocus: true, { source : emails_directory }); 
+0

謝謝。但我不明白。您也可以通過單擊來選擇自動填充,它是否仍會觸發ENTER keydown? –

+0

是的,但它不會改變任何東西。價值將保持不變 –

+0

好吧,要試試,謝謝 –