1、错误描述
Uncaught TypeError: Cannot read property 'decimalSeparator' of undefined
at Object.NumberFormat (http://127.0.0.1:8020/jqGrid/js/jquery.jqGrid.min.js:477:24)
at HTMLTableElement.P [as updatepager] (http://127.0.0.1:8020/jqGrid/js/jquery.jqGrid.min.js:213:1149)
at N (http://127.0.0.1:8020/jqGrid/js/jquery.jqGrid.min.js:187:336)
at Object.success (http://127.0.0.1:8020/jqGrid/js/jquery.jqGrid.min.js:224:29)
at j (http://127.0.0.1:8020/jqGrid/js/jquery-1.11.0.min.js:2:27136)
at Object.fireWith [as resolveWith] (http://127.0.0.1:8020/jqGrid/js/jquery-1.11.0.min.js:2:27949)
at x (http://127.0.0.1:8020/jqGrid/js/jquery-1.11.0.min.js:4:22244)
at XMLHttpRequest.b (http://127.0.0.1:8020/jqGrid/js/jquery-1.11.0.min.js:4:26298)
2、错误原因
a.fmatter.util = {
NumberFormat: function(b, c) {
if (a.fmatter.isNumber(b) || (b *= 1), a.fmatter.isNumber(b)) {
var d, e = 0 > b,
f = String(b),
g = c.decimalSeparator || ".";
if (a.fmatter.isNumber(c.decimalPlaces)) {
var h = c.decimalPlaces,
i = Math.pow(10, h);
if (f = String(Math.round(b * i) / i), d = f.lastIndexOf("."), h > 0) for (0 > d ? (f += g, d = f.length - 1) : "." !== g && (f = f.replace(".", g)); f.length - 1 - d < h;) f += "0"
}
if (c.thousandsSeparator) {
var j = c.thousandsSeparator;
d = f.lastIndexOf(g),
d = d > -1 ? d: f.length;
var k, l = f.substring(d),
m = -1;
for (k = d; k > 0; k--) m++,
m % 3 === 0 && k !== d && (!e || k > 1) && (l = j + l),
l = f.charAt(k - 1) + l;
f = l
}
return f = c.prefix ? c.prefix + f: f,
f = c.suffix ? f + c.suffix: f
}
return b
}
},
3、解决办法
引入国际化jqGrid js
<script type="text/javascript" src="js/i18n/grid.locale-cn.js" ></script>
4、附录
grid.locale-cn.js
/**
* jqGrid Chinese Translation
* 咖啡兔 yanhonglei@gmail.com
* http://www.kafeitu.me
*
* 花岗岩 marbleqi@163.com
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
**/
/*global jQuery, define */
(function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define([
"jquery",
"../grid.base"
], factory );
} else {
// Browser globals
factory( jQuery );
}
}(function( $ ) {
$.jgrid = $.jgrid || {};
if(!$.jgrid.hasOwnProperty("regional")) {
$.jgrid.regional = [];
}
$.jgrid.regional["cn"] = {
defaults : {
recordtext: "第{0}到第{1}条u3000共 {2} 条", // 共字前是全角空格
emptyrecords: "没有记录!",
loadtext: "读取中...",
savetext: "保存中...",
pgtext : "第{0}页u3000共{1}页",
pgfirst : "第一页",
pglast : "最后一页",
pgnext : "下一页",
pgprev : "上一页",
pgrecs : "每页记录数",
showhide: "切换 展开 折叠 表格",
// mobile
pagerCaption : "表格::页面设置",
pageText : "Page:",
recordPage : "每页记录数",
nomorerecs : "没有更多记录...",
scrollPullup: "加载更多...",
scrollPulldown : "刷新...",
scrollRefresh : "滚动刷新..."
},
search : {
caption: "搜索...",
Find: "查找",
Reset: "重置",
odata: [{ oper:'eq', text:'等于u3000u3000'},{ oper:'ne', text:'不等于u3000'},{ oper:'lt', text:'小于u3000u3000'},{ oper:'le', text:'小于等于'},{ oper:'gt', text:'大于u3000u3000'},{ oper:'ge', text:'大于等于'},{ oper:'bw', text:'开头是'},{ oper:'bn', text:'开头不是'},{ oper:'in', text:'属于u3000u3000'},{ oper:'ni', text:'不属于'},{ oper:'ew', text:'结尾是'},{ oper:'en', text:'结尾不是'},{ oper:'cn', text:'包含u3000u3000'},{ oper:'nc', text:'不包含'},{ oper:'nu', text:'为空'},{ oper:'nn', text:'不为空'}, {oper:'bt', text:'区间'}],
groupOps: [ { op: "AND", text: "满足所有条件" }, { op: "OR", text: "满足任一条件" } ],
operandTitle : "单击进行搜索。",
resetTitle : "重置搜索条件",
addsubgrup : "添加条件组",
addrule : "添加条件",
delgroup : "删除条件组",
delrule : "删除条件"
},
edit : {
addCaption: "添加记录",
editCaption: "编辑记录",
bSubmit: "提交",
bCancel: "取消",
bClose: "关闭",
saveData: "数据已修改,是否保存?",
bYes : "是",
bNo : "否",
bExit : "取消",
msg: {
required:"此字段必需",
number:"请输入有效数字",
minValue:"输值必须大于等于 ",
maxValue:"输值必须小于等于 ",
email: "这不是有效的e-mail地址",
integer: "请输入有效整数",
date: "请输入有效时间",
url: "无效网址。前缀必须为 ('http://' 或 'https://')",
nodefined : " 未定义!",
novalue : " 需要返回值!",
customarray : "自定义函数需要返回数组!",
customfcheck : "必须有自定义函数!"
}
},
view : {
caption: "查看记录",
bClose: "关闭"
},
del : {
caption: "删除",
msg: "删除所选记录?",
bSubmit: "删除",
bCancel: "取消"
},
nav : {
edittext: "",
edittitle: "编辑所选记录",
addtext:"",
addtitle: "添加新记录",
deltext: "",
deltitle: "删除所选记录",
searchtext: "",
searchtitle: "查找",
refreshtext: "",
refreshtitle: "刷新表格",
alertcap: "注意",
alerttext: "请选择记录",
viewtext: "",
viewtitle: "查看所选记录",
savetext: "",
savetitle: "保存记录",
canceltext: "",
canceltitle : "取消编辑记录",
selectcaption : "操作..."
},
col : {
caption: "选择列",
bSubmit: "确定",
bCancel: "取消"
},
errors : {
errcap : "错误",
nourl : "没有设置url",
norecords: "没有需要处理的记录",
model : "colNames 和 colModel 长度不等!"
},
formatter : {
integer : {thousandsSeparator: ",", defaultValue: '0'},
number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'},
currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'},
date : {
dayNames: [
"日", "一", "二", "三", "四", "五", "六",
"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六",
],
monthNames: [
"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二",
"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
],
AmPm : ["am","pm","上午","下午"],
S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
srcformat: 'Y-m-d',
newformat: 'Y-m-d',
parseRe : /[#%\/:_;., s-]/,
masks : {
// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
// and see http://docs.jquery.com/UI/Datepicker/formatDate
// and https://github.com/jquery/globalize#dates for alternative formats used frequently
// one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many
// information about date, time, numbers and currency formats used in different countries
// one should just convert the information in PHP format
ISO8601Long:"Y-m-d H:i:s",
ISO8601Short:"Y-m-d",
// short date:
// n - Numeric representation of a month, without leading zeros
// j - Day of the month without leading zeros
// Y - A full numeric representation of a year, 4 digits
// example: 3/1/2012 which means 1 March 2012
ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"
// long date:
// l - A full textual representation of the day of the week
// F - A full textual representation of a month
// d - Day of the month, 2 digits with leading zeros
// Y - A full numeric representation of a year, 4 digits
LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"
// long date with long time:
// l - A full textual representation of the day of the week
// F - A full textual representation of a month
// d - Day of the month, 2 digits with leading zeros
// Y - A full numeric representation of a year, 4 digits
// g - 12-hour format of an hour without leading zeros
// i - Minutes with leading zeros
// s - Seconds, with leading zeros
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"
// month day:
// F - A full textual representation of a month
// d - Day of the month, 2 digits with leading zeros
MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"
// short time (without seconds)
// g - 12-hour format of an hour without leading zeros
// i - Minutes with leading zeros
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"
// long time (with seconds)
// g - 12-hour format of an hour without leading zeros
// i - Minutes with leading zeros
// s - Seconds, with leading zeros
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"
SortableDateTime: "Y-m-d\TH:i:s",
UniversalSortableDateTime: "Y-m-d H:i:sO",
// month with year
// Y - A full numeric representation of a year, 4 digits
// F - A full textual representation of a month
YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
},
reformatAfterEdit : false,
userLocalTime : false
},
baseLinkUrl: '',
showAction: '',
target: '',
checkbox : {disabled:true},
idName : 'id'
},
colmenu : {
sortasc : "升序排序",
sortdesc : "降序排序",
columns : "列",
filter : "筛选",
grouping : "分类",
ungrouping : "取消分类",
searchTitle : "查找:",
freeze : "冻结",
unfreeze : "取消冻结",
reorder : "重新排序"
}
};
}));