我有一个jqGrid,上面写着要在表单中编辑的用户信息。用户名是不可变的,但应该出现在表单中,以便用户知道他们正在编辑哪个用户。密码仅限编辑。所以在我的colModel中我有这样的设置:
{name:'username', index:'username', width:155, editable:true, editoptions: {readonly:'readonly'}},
{name:'password', index:'password', width:155, hidden:true, editable: true, edittype:'password', editrules:{edithidden:true}},
这适用于编辑。我的问题是添加我需要使用户名“不读取”。我没有看到控制添加表单和编辑表单的属性。也许我可以使用afterShowForm
事件来更改编辑选项?有人做过这样的事吗?
答案 0 :(得分:7)
如果它对其他人有用,我无法完全做到这一点,但找到了完成最终结果的方法。
因此,我没有使用editoptions将表单字段设置为readonly,而是使用了add&的beforeShowForm事件。编辑选项以添加和/或删除readonly属性。
所以没有readonly的colmodel:
{name:'username', index:'username', width:155, editable:true},
{name:'password', index:'password', width:155, hidden:true, editable: true, edittype:'password', editrules:{edithidden:true}},
和navGrid编辑&添加选项以打开只读(用于添加)或关闭(用于编辑)。注意,INPUT标签的ID将是colModel中name
字段的值:
jQuery("#user-grid").jqGrid('navGrid','#user-grid-pager',
{ }, //options
{ // edit options
beforeShowForm: function(frm) {
$('#username').attr('readonly','readonly');
}
},
{ // add options
beforeShowForm: function(frm) {
$('#username').removeAttr('readonly');
}
},
{ }, // del options
{ } // search options
);
在旁注,虽然我知道(根据jquery转储)'frm'函数arg是一个包含表单的jQuery对象,我无法获得一个选择器来成功选择我想要的孩子所以我只是使用了id与colModel名称匹配。
答案 1 :(得分:1)
内置的jqgrid选项可以实现这一点。
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules
hidden:true,editrules:{edithidden:true,required:true ....},editable:true
因此,您可以使field_name可编辑:false,并将field_id设为上面
这也涵盖了选择框的另一个问题,也适用于它们