Jeśli chcesz rozwiązanie który działa w WSZYSTKICH nowoczesnych przeglądarkach, oto fajną jQuery plugin zrobiłem że emuluje funkcjonalność opisana:
Wystarczy kropla tego bloku do kodu-Base:
//plugin to make any element text editable
//http://stackoverflow.com/a/13866517/2343
$.fn.extend({
editable: function() {
var that = this,
$edittextbox = $('<input type="text"></input>').css('min-width', that.width()),
submitChanges = function() {
that.html($edittextbox.val());
that.show();
that.trigger('editsubmit', [that.html()]);
$(document).unbind('click', submitChanges);
$edittextbox.detach();
},
tempVal;
$edittextbox.click(function(event) {
event.stopPropagation();
});
that.dblclick(function(e) {
tempVal = that.html();
$edittextbox.val(tempVal).insertBefore(that).bind('keypress', function(e) {
if ($(this).val() !== '') {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
submitChanges();
}
}
});
that.hide();
$(document).click(submitChanges);
});
return that;
}
});
Teraz można dokonać edycji dowolnego elementu po prostu dzwoniąc .editable() na obiekcie selektor jQuery, tak:
$('#YOURELEMENT').editable();
aby zmiany, gdy użytkownik podnosi je, wiążą się z "editsubmit" zdarzenie, tak jak poniżej:
$('#YOURELEMENT').editable().bind('editsubmit', function(event, val) {});
//The val param is the content that's being submitted.
Oto demo skrzypce: http://jsfiddle.net/adamb/Hbww2/
A próbowałeś tego? –