【问题标题】:Cannot read property 'errcap' of undefined jqgrid无法读取未定义 jqgrid 的属性“errcap”
【发布时间】:2016-05-11 08:17:04
【问题描述】:

伙计们,我正在使用jqgrid

当我点击saveAllRows 时发生错误Cannot read property 'errcap' of undefined .. 这是我的那个按钮的代码

function saveAllRows(){
         var ids = $("#jqGrid").jqGrid('getDataIDs');
         var i;
         for (i = 0; i < ids.length; i++) {
            $("#jqGrid").jqGrid('saveRow', ids[i]);
        }
    }

这是我包含的内容

<script type="text/ecmascript" src="https://code.jquery.com/jquery-2.2.3.min.js"></script> 
    <!-- We support more than 40 localizations -->
    <script type="text/ecmascript" src="resources/grid.locale-en.js"></script>
    <!-- This is the Javascript file of jqGrid -->   
    <script type="text/ecmascript" src="resources/jquery.jqGrid.js"></script>
    <!-- A link to a Boostrap  and jqGrid Bootstrap CSS siles-->
    <script type="text/ecmascript" src="resources/bootstrap-datepicker.js"></script> 
    <script type="text/ecmascript" src="resources/jquery.timepicker.js"></script> 
    <script type="text/ecmascript" src="https://cdn.jsdelivr.net/jquery.ui.timepicker.addon/1.4.5/jquery-ui-sliderAccess.js"></script> 
    
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> 
    <link rel="stylesheet" type="text/css" media="screen" href="resources/ui.jqgrid-bootstrap.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="resources/bootstrap-datepicker.css" />
	<link rel="stylesheet" type="text/css" media="screen" href="resources/jquery.timepicker.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="resources/style.css" />
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

任何帮助..为什么会发生这种情况??

【问题讨论】:

  • 您使用哪个版本的 jqGrid 以及来自哪个 jqGrid 分支(free jqGrid、商业Guriddo jqGrid JS 或版本
  • 更新我的问题..请看看
  • 我正在使用 Guriddo jqGrid JS
  • 您使用哪个版本的jqGrid?

标签: javascript jquery jqgrid


【解决方案1】:

错误

无法读取未定义的属性“errcap”

表示$.jgrid.defaults.errors.errcap$.jgrid.locales["en-US"].errors.errcap$.jgrid.regional.en.errors.errcap 之类的字符串(取决于您使用的jqGrid 的版本和fork)是未定义的。如果您使用free jqGrid,问题就不会存在,因为在jquery.jqgrid.min.js 中定义了 en-US 语言环境所需的字符串。例如,要使用最新的免费 jqGrid 4.13.3,您需要包含 ui.jqgrid.min.cssjquery.jqgrid.min.js 文件

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.3/css/ui.jqgrid.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.3/js/jquery.jqgrid.min.js"></script>

其中包括您需要的所有内容。

如果您使用一些旧的 jqGrid,例如 jqGrid 4.6,那么 您必须包含 grid.locale-en.js,它定义了一些特定于语言的字符串,包括 $.jgrid.defaults.errors.errcap。那么包含的文件列表应该如下

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/css/ui.jqgrid.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>

【讨论】:

  • 仍然没有保存日期 .. 它给了我未定义的消息
  • @mermer:你试过什么?您是否尝试将您当前使用的 grid.locale-en.jsui.jqgrid.cssjquery.jqGrid.js 替换为我发布的释放 jqGrid 4.13.3 的 URL?该消息意味着两个问题:1) 无法保存更改 2) 错误消息无法在您使用的语言环境中显示。你有在线演示吗?
  • 当我点击保存所有行时 .. 它会保存除日期之外的所有行 .. 一条消息给我未定义的弹出窗口 .. 这是我的日期代码
  • 请检查我发布的答案
  • @mermer:对不起,你把很多不同的问题混在一起了。 1)datepicker的用法错误(你把datepicker的选项,比如format: 'yyyy-mm-dd'showOn等等放错了地方)。 2) 在 error 的情况下,用户应该看不到有关“未定义”变量的消息。如果显示消息,那么您包含错误的grid.locale-en.js(来自另一个版本,哪个错误的 URL 等)或者您使用了错误的 jqGrid 本地选项。这些选项取决于 jqGrid 的 version 和 fork。你能回答哪个版本你使用的jqGrid吗?
【解决方案2】:
{ label: 'Date', name: 'Date', width: 150 , "formatter":"date",
                           editable: true,
                           edittype:"custom",
                           editoptions: {
                               autoclose: true,
                               autoOpen: false,
                               format: 'yyyy-mm-dd',
                               orientation : 'auto bottom',
                               showOn: 'both',
                               formatoptions :{"srcformat":"Y-m-d", "newformat":"m/d/Y"},
                               dataInit : function (elem) {
                                  // $(elem).datepicker({autoclose: true});
                                   //$(elem).datepicker('hide');
                                   setTimeout(function(){
                                      $(elem).datepicker({autoclose: true});
                                   },10);
                                   /*$(elem).on('changeDate', function(ev){
                                        $(this).datepicker('hide');
                                    });*/

                               },
                               custom_element: function(value, options) {
                                  var parts = value.split(' ');
                                var elemStr = '<div><input size="6" id="txt_' +'" value="' + parts[0] +
                                '" /><input type="button" size="5" value="..."/></div>';

                                  // return DOM element from jQuery object
                                  return $(elemStr)[0];
                              },
                              custom_value: function(elem) {
                                  var inputs = $("input", $(elem));
                                  var first = inputs.value;
                                  return first;
                              }
                           }
                       },

【讨论】:

  • 不是您问题的答案。您应该单击问题下方的“编辑”按钮并修改问题的文本。通常会在文本后面附加 UPDATED:​​>、UPDATED 1: UPDATED 2:、...以及一些有助于理解您的附加信息原始问题。
猜你喜欢
  • 2021-03-07
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 2020-10-30
  • 2019-10-09
相关资源
最近更新 更多