Вы можете использовать события выбора и закрытия, чтобы снимать режим редактирования
close: function(event, ui) { enterEditMode()},
select: function(event, ui) { enterEditMode()}
Вот они в вашем коде:
function enterEditMode() {
$("#read").hide();
$("#edit").show().focus();
}
function exitEditMode() {
$("#read").show();
$("#edit").hide();
}
function commitChanges() {
$("#read").text($("#edit").val());
exitEditMode();
}
$(function() {
$("#read").dblclick(enterEditMode);
$("#edit").keydown(function(event) {
if (event.keyCode === 27) exitEditMode();
else if (event.keyCode === 13) commitChanges();
}).autocomplete({
source: ["this", "that", "the other"],
close: function(event, ui) { enterEditMode()},
select: function(event, ui) { enterEditMode()}
});
});
Рабочий пример:
http://jsfiddle.net/9unaU/6/
Обновление:
Внесено другое изменение, обеспечивающее скрытие автозаполнения при exitEditMode
function exitEditMode() {
$("#read").show();
$("#edit, .autocomplete").hide();
}
Пример работы:
http://jsfiddle.net/9unaU/7/
Обновление 2: Отредактировал оператор if так, что он фиксируется, только если автозаполнение скрыто
if (event.keyCode === 27) exitEditMode();
else if (event.keyCode === 13 && ($('.autocomplete').is(':hidden'))) commitChanges();
Рабочий пример 2: http://jsfiddle.net/9unaU/10/