1

我为初始条件添加了一些代码,以防有人感兴趣;我将此代码放在 Country datainit 中:

    setTimeout(function ()
                            {
                                var required = $(elem).val() === 'US';
                                grid.jqGrid('setColProp', 'PostalCode', { editrules: { required: required} });
                                $('#PostalCode').siblings('.mystar').html(required ? '*' : ' ');
                            }, 100);

(我知道 JQGrid 的新版本不再需要 setTimeout,但我在升级时遇到了问题。)


我需要动态设置formedit列的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'); }
    }
]

有什么办法可以做到这一点?

4

1 回答 1

0

的选项formoptions.elmprefix和其他属性formoptions将在创建编辑表单之前使用。您可以在创建表单之前使用回调beforeInitData或事件来修改数据。jqGridAddEditBeforeInitData

如果您确实需要动态显示/隐藏星号,您可以手动隐藏相应的元素。例如,您可以定义elmprefix

elmprefix: "<span class='mystar' style='color:red'>*</span>"

以便能够轻松找到和修改它。然后你可以使用

$("#PostalCode").siblings(".mystar").html($(e.target).val() === 'US' ? "*" : "&nbsp;");

change处理程序内部而不是grid.jqGrid('setColProp', 'PostalCode', ...);

于 2013-01-17T20:06:23.863 回答