jQGrid错误发射时编辑表格

问题描述:

我在它的最新版本和jQuery Migrate 1.4.1(1.6.x到1.9.2)和jQuery UI 1.12.1中使用免费的jQGrid。 更新jQuery/jQuery UI编辑表单不再工作了!jQGrid错误发射时编辑表格

CODE:

onInitializeForm: function(formid) { 
    var form = $(formid).attr('id').split('-').pop(); 
    var id = $(formid).find('#id_g').val(); 
    var bt_gerar = $('<input />').attr('type', 'button').val('Gerar').click(function() { 
     $(formid).find('input[name="senha"]').val(gerarPassword()); 
    }); 
    if (form === 'laudos') $(formid).find('input[name="senha"]').after(bt_gerar); 
    if (form === 'usuarios') $(formid).find('input[name="senha"]').val(''); 
    $(formid).find('input[name="criacao"], input[name="exclusao"], input[name="data"]').datepicker({ 
     dateFormat: 'dd/mm/yy' 
    }); 
    /* UPLOAD LAUDO */ 
    var base_url = window.location.protocol + "//" + window.location.host + "/_dev/"; 
    $('#arquivo').uploadify({ 
     'swf' : base_url + 'admin/js/uploadify-new/uploadify.swf', 
     'uploader' : base_url + 'admin/js/uploadify-new/uploadify.php?laudo=true', 
     'cancelImage' : base_url + 'admin/img/cancel.png', 
     'buttonImage' : base_url + 'admin/img/upload_mini.png', 
     'wmode'  : 'transparent', 
     'width'  : '20', 
     'height' : '20', 
     'auto'  : true, 
     'multi'  : false, 
     'fileExt' : '*.pdf', 
     'fileDesc' : 'Arquivo PDF (.PDF)', 
     'onComplete': function(event, ID, fileObj, response, data) { 
      $('#arquivo').before($('<input />').attr({type:'text',id:'arquivo_temp',class:'FormElement',name:'arquivo',value:response,role:'textbox'})); 
      $('#arquivo, #arquivoUploader, #arquivoQueue').remove(); 
      $('#arquivo_temp').attr('id','arquivo').hide(); 
      $('#arquivo').after($('<img />').attr({src:'/laudos/pdf.png',id:'arquivo_icone'})); 
     } 
    }); 

ERROR:

TypeError: $(...).closest(...).attr(...).replace is not a function 

FILE:jquery.jqgrid.src.js在行

代码错误行:

$id = $(this).closest("table.ui-jqgrid-btable").attr("id").replace(/_frozen([^_]*)$/, "$1") 

得到任何光线? Thk yu!

请指定您使用的jqGrid的确切版本。 jquery.jqgrid.src.js的线19319的free jqGrid 4.13.6包含var insertPrefixAndSuffix = function (sOutput, opts) {(参见here)。声明“我正在使用免费的jQGrid,它是最新版本”并没有提供足够的信息。

您发布的行$id = $(this).closest("table.ui-jqgrid-btable").attr("id").replace(/_frozen([^_]*)$/, "$1")的免费jqGrid版本4.13.5中的行号为19319。代码在$.fn.fmatter.rowactions之内。因此,您在使用formatter: "actions"时可能会遇到一些问题,但不包括colModel和相应的列。方法$.fn.fmatter.rowactions将在动作按钮的onclick中调用,该按钮必须位于jqGrid中,该jqGrid必须具有ui-jqgrid-btable类。

我很难猜测,为什么你会得到错误。您可能会对jqGrid类进行一些非法修改(例如删除ui-jqgrid-btable类),或者您将网格内容(包括操作按钮)移至jqGrid内容或其他一些奇怪的内容之外。无论如何,你应该包括colModel列的定义,它使用formatter: "actions"

顺便说一句,免费jqGrid支持template: "actions",您可以使用它,而不是formatter: "actions"。该template: "actions"是以下设置

formatter: "actions", align: "center", label: "", autoResizable: false, frozen: true, 
fixed: true, hidedlg: true, resizable: false, sortable: false, 
search: false, editable: false, viewable: false 

width设置,它的值取决于jqGrid的一些其他选项的快捷方式。大多数属性都被严格推荐用于formatter: "actions"(甚至对于旧版本的jqGrid)列。

我建议你更新到免费的jqGrid 4.13.6并替换formatter: "actions"template: "actions"(或在行动列中交替添加editable: false和其他属性)。我希望它能解决你的问题。