チャームのように機能します..
すべての行(tr)には独自のキャッシュ変数があります
1つの入力を編集する場合、そのプライマー値はその親trキャッシュ変数にキャッシュされます。別の入力を編集すると、最初の入力は元の値に戻ります。
$(function(){
// jQ 1.7 for on method
$('table tr').data('bak',{$node:null, value:''}).on('dblclick', 'input[type="text"]', function(e){
var $input = $(this),
$tr = $input.closest('tr'),
data = $tr.data('bak');
// No input yet edited on this tr/line OR same
if(! data.$node ){
$input
.toggleClass("active")
.prop('readonly', false);
$tr.data('bak',{$node:$input, value:$input.val()});
} else if($input.attr('id') != data.$node.attr('id')){
data.$node
.toggleClass("active")
.prop('readonly', true);
// restore initial value for the previous clicked input
data.$node.val(data.value);
// backup bak with the new input double clicked and it's value
$input
.toggleClass("active")
.prop('readonly', false);
$tr.data('bak',{$node:$input, value:$input.val()});
}
return false;
});
});