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
和其他属性)。我希望它能解决你的问题。