我为初始条件添加了一些代码,以防有人感兴趣;我将此代码放在Country datainit中:
setTimeout(function ()
{
var required = $(elem).val() === 'US';
grid.jqGrid('setColProp', 'PostalCode', { editrules: { required: required} });
$('#PostalCode').siblings('.mystar').html(required ? '*' : ' ');
}, 100);
(据我所知,JQGrid的新版本不需要setTimeout,但我遇到升级问题。)
我需要动态设置成形列的elmprefix。这个想法是,对于美国,需要邮政编码。必需元素正在运行,但elmprefix未显示。
dataEvents: [
{
type: "change",
fn: function (e) {
changeStateSelect($(e.target).val(), e.target);
var isUS = $(e.target).val() == 'US';
grid.jqGrid('setColProp', 'PostalCode', { editrules: { required: isUS },
formoptions: { elmprefix: (isUS ? "<font color='red'>*</font>" : " ")}
});
}
},
{
type: "keyup",
fn: function (e) { $(e.target).trigger('change'); }
}
]
有什么方法可以实现这个目标吗?
答案 0 :(得分:0)
在创建编辑表单之前,将使用选项formoptions.elmprefix
和formoptions
的其他属性。您可以使用回调beforeInitData
或事件jqGridAddEditBeforeInitData
在创建表单之前修改数据。
如果您确实需要动态显示/隐藏星号,您可以手动隐藏相应的元素。例如,您可以将elmprefix
定义为
elmprefix: "<span class='mystar' style='color:red'>*</span>"
能够轻松找到并修改它。然后你可以使用
$("#PostalCode").siblings(".mystar").html($(e.target).val() === 'US' ? "*" : " ");
在change
处理程序内而不是grid.jqGrid('setColProp', 'PostalCode', ...);