我正在使用表单编辑。我想根据下拉框中的选择禁用我添加和编辑表单中的某些字段。什么事件最好用来触发这个?我试图使用dataEvents:
{ name:'type_cd',
edittype:'select',
editoptions:{
dataUrl:'functions.php',
dataEvents:[{
type:'change',
fn: function(e){
$(this).setColProp('cntrct_id',{
editoptions:{editable:false}
});
}
}]
}
},
这对我的表单字段没有明显的影响,但是我知道它已经被访问了,因为如果我把它放进去的话,我可以收到它的警告信息。
修改
如果我提交表单,则下次打开表单时,将不会显示设置为editable:false的列。这是朝着正确方向迈出的一步,但我希望立即是不可编辑的。真的,我希望它可见,但禁用(即禁用:true)
答案 0 :(得分:4)
首先,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
将用于任何现有的编辑模式(表单编辑,内联编辑和单元格编辑)非常重要。如果要编写支持所有编辑模式的{
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);
}
}
}
}
}]
}
}
代码,则必须检测编辑模式并使用其他一些编辑字段。代码(未经测试)可以大致如下
{{1}}
答案 1 :(得分:-1)
@Oleg:这是有效的(可以获取警报消息),但它不会禁用该字段。 表单字段是否需要任何特殊值?