アプリで剣道グリッドを使用しています。要件は、ダブルクリックでグリッドを編集可能にすることです。イベントを処理し、.dblclick
を使用してプログラムでセルを編集可能にして.editCell(cell)
います。問題は、誰かがセルの外をクリックしたとき、またはEnterまたはReturnボタンを押したときに変更を保存し、誰かがESCをクリックしたときに元に戻す必要があることです。さらに、無効な日付がある場合は保存しないでください。
focusout、blur、click イベントを試しましたが、機能するもの、機能しないもの、重なってセルが開かないものがあります。
これが私のコードです。
//code for double click;
$('#grid').delegate('tbody>tr>td','dblclick', function (e) {
console.log("double clicked");
if($(".k-grid-edit-row").length <= 0) {
$("#grid").data("kendoGrid").editCell($(this));
}
});
$('#grid tbody').on('blur','input,select,textarea',saveGrid);
$('#grid').delegate('tbody>tr>td','focusout',function() {
console.log("inside focusout");
if($(this).hasClass("k-edit-cell"))
return;
saveGrid();
});
$('#grid').delegate('tbody>tr>td','click', function(e){
console.log("singleClick called");
if($(this).hasClass("k-edit-cell"))
return;
saveGrid();
});
function saveGrid() {
console.log("save grid called");
var grid = $("#grid").data("kendoGrid");
var editedCellIndex =grid.cellIndex(grid.tbody.find(">tr td.k-edit-cell"));
console.log("this cell index:"+grid.cellIndex($(this)));
console.log(" Edited cell index :"+editedCellIndex);
if(editedCellIndex<0) {
return false;
}
if($(".k-grid-edit-row").hasClass("k-invalid")) {
return false;
}
grid.closeCell();
console.log("saving changes");
grid.saveChanges();
}
さらに情報が必要な場合はお知らせください。