En vista de que esta página es a la vez de 3 años y el primer resultado de una búsqueda en Google, pensé que era debido una respuesta más actual. Dado el peso y la complejidad de las opciones de plugin anteriores, pensé que una solución más sencilla, sencilla y directa también podría ser apreciada por quienes buscan alternativas.
Esto sustituye a la celda de la tabla con una entrada de texto y llamadas de eventos personalizados para que pueda manejar cualquier caso de uso que desee en guardar, cerrar, desenfoque, etc ...
En este caso, la única manera de cambiar el la información en la celda es presionar enter, pero puede personalizarla si lo desea, ej. es posible que desee guardar en desenfoque.
En este ejemplo, también puede presionar la tecla Esc para detener la edición y volver a poner la celda como estaba. Puede personalizar eso si lo desea.
Este ejemplo funciona con un solo clic, pero algunas personas prefieren hacer doble clic, a su elección.
$.fn.makeEditable = function() {
$(this).on('click',function(){
if($(this).find('input').is(':focus')) return this;
var cell = $(this);
var content = $(this).html();
$(this).html('<input type="text" value="' + $(this).html() + '" />')
.find('input')
.trigger('focus')
.on({
'blur': function(){
$(this).trigger('closeEditable');
},
'keyup':function(e){
if(e.which == '13'){ // enter
$(this).trigger('saveEditable');
} else if(e.which == '27'){ // escape
$(this).trigger('closeEditable');
}
},
'closeEditable':function(){
cell.html(content);
},
'saveEditable':function(){
content = $(this).val();
$(this).trigger('closeEditable');
}
});
});
return this;
}
Puede aplicar selectivamente las células editables uniéndolos como tal, o lo que tiene sentido para su caso.
$('.editable').makeEditable();
lo probé, lo único que hace es desaparece la célula, lo deja vacío. – mrpatg