未捕获的TypeError:无法读取未定义的属性'errcap'

时间:2015-06-12 05:15:10

标签: jquery jqgrid

我在Chrome中遇到错误“Uncaught TypeError:无法读取未定义的属性'errcap'。

enter image description here

在firefox上,我遇到了这个: enter image description here

我正在使用jqgrid 4.8.2。

这是我的代码:

<!DOCTYPE HTML>
 <html lang="en-us">
  <head>
   <meta charset="utf-8">
  <script type="text/javascript">
/* Input: user types in an integer
 * Processing: adds all odd numbers between input and 0
 * Output: the sum of the odd numbers 
 */
 function addOdds() {
    var n = parseInt(document.getElementById('number').value);  
        var sum = 0;
            for (var i = 0; i < n; i++) {
                if (i % 2 != 0) {
                    sum += i;
                }
                ;
            }
            window.alert(sum);
        }   
        </script>
    </head>

    <body>
    Please enter a number. <input type="text" id="number">
    <button type="button" onclick="addOdds()"> Get the sum </button>
    <div id=""> </div> <!--is this part need? -->
</body>
</html>

当我点击保存图标时会发生错误,如下图所示: enter image description here

感谢您的帮助,伙计们。

2 个答案:

答案 0 :(得分:1)

我自己不使用jqGrid 4.8.2,因为我在更改了jqGrid的许可协议并将其设为free jqGrid之后开发了jqGrid的替代分支:Guriddo jqGrid JS。不过我查看了代码,可以看到the lines

中的错误
var errors = $.jgrid.getRegional(this, 'errors'),
edit =$.jgrid.getRegional(this, 'edit'),
代码saveRow

。正确的代码应该是

var errors = $.jgrid.getRegional($t, 'errors'),
edit = $.jgrid.getRegional($t, 'edit'),

其中$t等于this[0](请参阅the line)。您可以对jquery.jqGrid.js的代码进行修改(请参阅the line 10179)并使用它而不是jquery.jqGrid.min.js来验证问题是否会在解决方案中得到解决。

答案 1 :(得分:1)

或者您可以在页面中添加javascript

//fix for jqgrid 
//http://stackoverflow.com/questions/30795713/uncaught-typeerror-cannot-read-property-errcap-of-undefined
$.jgrid.getRegional = function(inst, param, def_val) {
    try{
        if (inst instanceof jQuery){
            inst = inst.get(0);
        }
    }catch(e){}
    var ret;
    if(def_val !== undefined) {
        return def_val;
    }
    if(inst.p && inst.p.regional && $.jgrid.regional) {
            ret = $.jgrid.getAccessor( $.jgrid.regional[inst.p.regional] || {}, param);
    }
    if(ret === undefined ) {
        ret = $.jgrid.getAccessor( $.jgrid, param);
    }
    return ret;
}