2016-03-24 63 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

好吧,要试试,谢谢 –