首先dataEvents
允许您在编辑元素的元素上注册回调。内部回调this
将被初始化为将被绑定的 DOM 元素。所以$(this)
在change
处理程序内部,它将是<select>
元素上的包装器,而不是网格上的包装器。的用法$(this).setColProp
将不正确。
要禁用添加/编辑表单中的某些输入字段,您可以使用所有输入元素id
与. 因此,如果您需要禁用输入,可以将属性设置为元素name
colModel
cntrct_id
disabled
true
id="cntrct_id"
{
name: 'type_cd',
edittype: 'select',
editoptions: {
dataUrl: 'functions.php',
dataEvents: [{
type: 'change',
fn: function (e) {
// disable input/select field for column 'cntrct_id'
// in the edit form
$("#cntrct_id").prop("disabled", true);
}
}]
}
}
重要的是要了解editoptions
它将用于任何现有的编辑模式(表单编辑、内联编辑和单元格编辑)。如果要编写dataEvents
支持所有编辑模式的代码,则必须检测编辑模式并使用一些其他编辑字段的 id。代码(未测试)大概如下
{
name: 'type_cd',
edittype: 'select',
editoptions: {
dataUrl: 'functions.php',
dataEvents: [{
type: 'change',
fn: function (e) {
var $this = $(e.target), $td, rowid;
// disable input/select field for column 'cntrct_id'
if ($this.hasClass("FormElement")) {
// form editing
$("#cntrct_id").prop("disabled", true);
} else {
$td = $this.closest("td");
if ($td.hasClass("edit-cell") {
// cell editing
// we don't need to disable $("#cntrct_id")
// because ONLY ONE CELL are edited in cell editing mode
} else {
// inline editing
rowid = $td.closest("tr.jqgrow").attr("id");
if (rowid) {
$("#" + $.jgrid.jqID(rowid) + "_cntrct_id")
.prop("disabled", true);
}
}
}
}
}]
}
}
最后一句话。如果您仍然使用不支持prop方法的旧版本 jQuery(jQuery 1.6 之前),则必须改用attr。