新しいレコードを追加するためにプラグインを使用しています。この例では、[追加] ボタンをクリックすると、テーブル内のフィールドを含むサブフォームが開きます。サブフォームで [OK] をクリックすると、サブフォームに記載されている値を含む新しい編集可能な行がテーブルに作成されます。しかし、サブフォームを開かずに編集可能な行を追加する必要があります。また、ユーザーはテーブルに値を入力する必要があります。このコードは、「jquery.dataTables.editable.js」ファイルのサブフォームから行を追加するために使用されます。
///Event handler called when a new row is added and response is returned from server
function _fnOnRowAdded(data) {
properties.fnEndProcessingMode();
if (properties.fnOnNewRowPosted(data)) {
var oSettings = oTable.fnSettings();
var iColumnCount = oSettings.aoColumns.length;
var values = new Array();
$("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel]", oAddNewRowForm).each(function () {
var rel = $(this).attr("rel");
var sCellValue = "";
if (rel >= iColumnCount)
properties.fnShowError("In the add form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add");
else {
if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select")
sCellValue = $("option:selected", this).text();
else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span")
sCellValue = $(this).html();
else
sCellValue = this.value;
sCellValue = sCellValue.replace(properties.sIDToken, data);
values[rel] = sCellValue;
}
});
//Add values from the form into the table
var rtn = oTable.fnAddData(values);
var oTRAdded = oTable.fnGetNodes(rtn);
//Apply editable plugin on the cells of the table
_fnApplyEditable(oTRAdded);
//add id returned by server page as an TR id attribute
properties.fnSetRowID($(oTRAdded), data);
//Close the dialog
oAddNewRowForm.dialog('close');
$(oAddNewRowForm)[0].reset();
$(".error", $(oAddNewRowForm)).html("");
_fnSetDisplayStart();
properties.fnOnAdded("success");
}
}
上記のコードを編集して、サブフォームを開かずに行を追加しました。ただし、追加された行は編集できません。編集可能にするには、どのような変更を行う必要がありますか?