Jquery jqGrid:编辑时禁用表单字段
我目前正在开发一个web应用程序,用于管理自动售货机等。 我决定在这个项目中使用jQuery、jQuery UI和jqGrid,这样我就可以轻松地提供一个很棒的、高度可定制的用户界面。Jquery jqGrid:编辑时禁用表单字段,jquery,jqgrid,editing,Jquery,Jqgrid,Editing,我目前正在开发一个web应用程序,用于管理自动售货机等。 我决定在这个项目中使用jQuery、jQuery UI和jqGrid,这样我就可以轻松地提供一个很棒的、高度可定制的用户界面。 不幸的是,已经过时了,并且没有涵盖这个伟大插件的所有特性(因为我真的很喜欢它,尽管文档很差) 无论如何,我想有足够的背景资料。让我们开门见山: 我使用jqGrid内置的导航栏从网格中添加、编辑和删除项目。 除了一件事之外,我的这项功能非常有效:某些字段只能在添加新项目时启用(或可见),而不能在编辑模式下启用(应隐
不幸的是,已经过时了,并且没有涵盖这个伟大插件的所有特性(因为我真的很喜欢它,尽管文档很差) 无论如何,我想有足够的背景资料。让我们开门见山:
我使用jqGrid内置的导航栏从网格中添加、编辑和删除项目。
除了一件事之外,我的这项功能非常有效:某些字段只能在添加新项目时启用(或可见),而不能在编辑模式下启用(应隐藏和/或禁用) 示例:
我工作的那家公司出售自动售货机和自动售货机 有几种类型(不同) 这些塔的尺寸和材料)。什么时候 一个新的塔被添加到一个位置并 输入到系统中,类型 必须设置。但这座塔没有 随着时间神奇地改变,所以 以后可能无法编辑此字段 有人知道是否可以通过更改某些初始化参数来实现此行为吗?
可能是未记录的编辑选项(editoptions)或表单选项(formoptions)?
或者你有一个简单的解决方案 我很想听听你的建议/解决方案
谢谢=)您可以用不同的方式实现您的需求。例如,在
beforeShowForm
事件中,可以隐藏或显示
jQuery("#list").jqGrid({
colModel: [
{ name: 'Name', width: 200, editable: true },
//...
}).jqGrid('navGrid','#pager', { edit: true, add: true, del: false},
{ // edit option
beforeShowForm: function(form) { $('#tr_Name', form).hide(); }
},
{ // add option
beforeShowForm: function(form) { $('#tr_Name', form).show(); }
});
其中,id“tr_Name”由“tr_”前缀和“Name”构造而成,colModel
中列的Name属性
更新的:In和In显示了在初始化编辑之前如何动态更改属性的另一种方式
更新2:允许将
可编辑的定义为回调函数或“禁用”
、“隐藏”
或“只读”
。看见它允许更容易地实现相同的要求。要使字段可编辑或不可编辑,这是我在搜索一个答案一段时间后(在行内编辑时禁用编辑,但在“添加”时允许编辑)而没有找到我需要的答案时结束编码的原因:
colModel :[
{name:'id', index:'id', editable:false, ...
}).navGrid("#pager",{edit:false,add:true,del:false,search:false,refresh:true},
{}, // edit
{
beforeInitData: function(formid) {
$("#list").jqGrid('setColProp','id',{editable:true});
},
afterShowForm: function (formid) {
$("#list").jqGrid('setColProp','id',{editable:false});
},
以下是一个例子:
可见但不可编辑:
{ // edit option
beforeShowForm: function(form) {
$('#col_name', form).attr("disabled", true);
}
}
这将适用于免费jqgrid,简单明了:
此特定示例仅允许在“添加”表单中进行编辑:
谢谢你的信息。此外,如果要在网格中隐藏列,但要在“添加”或“编辑”窗体中显示,请在colModel中使用hidden:true,在beforeShowForm中使用show()方法。感谢您提供的解决方案。我还有一个小问题:编辑模式表单中的隐藏字段在添加模式表单中设置为必填字段,因此在编辑客户端验证时告诉我:字段是必填字段。@Cargo:抱歉,我无法理解您的问题。你能用别的话问这个问题吗?是否需要更改editrules
的required
属性的值?在展示前的beforeShowForm
中,您应该能够做到这一点。嗨,Oleg,很抱歉,问题不清楚。我有两个字段:用户名和密码。我希望在添加新行表单中,两个字段都是必需的,在编辑表单中,密码不会出现在表单中(隐藏)。添加工作正常,但在编辑表单时需要填写密码(隐藏字段)。非常感谢。@Oleg在function(form){
中的参数form
代表什么?嗨,josemaria,你能告诉我如何添加这个传统信息标签吗?我应该把这个代码放在哪里?谢谢。
{ // edit option
beforeShowForm: function(form) {
$('#col_name', form).attr("disabled", true);
}
}
editable: function (options) {
// Allow edit only for "add" not for "edit"
if (options.mode === "addForm")
{
return true;
}
else if (options.mode === "editForm")
{
return false;
}
else
{
return false;
}