在内联编辑时获取jqgrid中文本框的默认值
get the defaultValue of textbox in jqgrid while on inline-edit
我们可以使用以下方法获取普通 html 文本框的默认值:
$("#textboxId").prop("defaultValue");
但是在 jqgrid(inline-edit) 中,在编辑一行时,如果 select 文本框并检查默认值,结果总是空的。
我想在编辑模式下获取文本框的原始值,以检查文本框的值是否真的改变了。
请帮忙。谢谢
您需要做的是使用 jqGrid 选项的 onSelectRow 函数在用户单击在线编辑中的行时正确获取旧行数据,然后使用 beforeSaveRow 检查更改。
这是它的代码和 jsFiddle link。
var lastSel = 0;
var mydata = [
{id:"1", name: "abc",desc: "desc 11"},
{id:"2", name: "def",desc: "hello there"},
{id:"3", name: "xyz",desc: "desc 44"}
];
$("#list").jqGrid({
datatype: "local",
data: mydata,
height: "auto",
colModel :[
{name:'id',key:true, index:'idcustomers', width:55},
{name:'name', width:100,editable: true},
{name:'desc', width:100,editable: true}
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'idcustomers',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Customers',
cellsubmit: 'clientArray',
onSelectRow: function (id) {
var currentRow = $('#list').jqGrid("getRowData",id);
if (id && id !== lastSel) {
lastSel=id;
}
else
{
return;
}
jQuery('#list').editRow(id,
{
"keys": true,
oneditfunc: function () {
},
"successfunc": null,
"url": null,
"extraparam": {},
"aftersavefunc": null,
"errorfunc": null,
"afterrestorefunc": null,
"restoreAfterError": true,
"beforeSaveRow": function (options, rowid) {
// jqGrid calls its own SaveRow when the user hits 'Enter'. We need it to call ours.
// Note, the 'beforeSaveRow' is undocumented, but it gets invoked before jqGrid calls its own SaveRow method.
var newName = jQuery('#' + rowid + '_' + 'name').val();
var oldName = currentRow.name;
if(newName!=oldName)
{
alert('changed');
}
return true;
},
});
}
});
我们可以使用以下方法获取普通 html 文本框的默认值:
$("#textboxId").prop("defaultValue");
但是在 jqgrid(inline-edit) 中,在编辑一行时,如果 select 文本框并检查默认值,结果总是空的。
我想在编辑模式下获取文本框的原始值,以检查文本框的值是否真的改变了。
请帮忙。谢谢
您需要做的是使用 jqGrid 选项的 onSelectRow 函数在用户单击在线编辑中的行时正确获取旧行数据,然后使用 beforeSaveRow 检查更改。
这是它的代码和 jsFiddle link。
var lastSel = 0;
var mydata = [
{id:"1", name: "abc",desc: "desc 11"},
{id:"2", name: "def",desc: "hello there"},
{id:"3", name: "xyz",desc: "desc 44"}
];
$("#list").jqGrid({
datatype: "local",
data: mydata,
height: "auto",
colModel :[
{name:'id',key:true, index:'idcustomers', width:55},
{name:'name', width:100,editable: true},
{name:'desc', width:100,editable: true}
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'idcustomers',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Customers',
cellsubmit: 'clientArray',
onSelectRow: function (id) {
var currentRow = $('#list').jqGrid("getRowData",id);
if (id && id !== lastSel) {
lastSel=id;
}
else
{
return;
}
jQuery('#list').editRow(id,
{
"keys": true,
oneditfunc: function () {
},
"successfunc": null,
"url": null,
"extraparam": {},
"aftersavefunc": null,
"errorfunc": null,
"afterrestorefunc": null,
"restoreAfterError": true,
"beforeSaveRow": function (options, rowid) {
// jqGrid calls its own SaveRow when the user hits 'Enter'. We need it to call ours.
// Note, the 'beforeSaveRow' is undocumented, but it gets invoked before jqGrid calls its own SaveRow method.
var newName = jQuery('#' + rowid + '_' + 'name').val();
var oldName = currentRow.name;
if(newName!=oldName)
{
alert('changed');
}
return true;
},
});
}
});