2013-01-17 47 views
1

我为初始条件添加了一些代码,以防任何人感兴趣;我把这个代码在国家datainit:JQGrid表单编辑:动态修改列的elmprefix

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

选项formoptions.elmprefixformoptions的其他属性将被用于之前编辑窗体将被创建。您可以使用回调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', ...);

+0

感谢奥列格你是男人一如既往! –

+0

@RichT .:不客气! – Oleg