您可以使用select和關閉事件重新返回到編輯模式
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/
感謝您查看我的問題。建議解決方案的問題在於,當用戶按下菜單項上的輸入時,該值會被提交。爲了演示,設想從菜單中選擇一個項目,然後按'esc。'。然後應該在讀取模式下看到原始值。在您的示例中,更改已經提交。 – 2010-12-07 19:49:52