CmsWeb/shop/js/Calculation.js
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
/** jQuery Calculation Plug-in**/
(function($) {
var defaults = {reNumbers: /(-|-\$)?(\d+(,\d{3})*(\.\d{1,})?|\.\d{1,})/g, cleanseNumber: function (v) {
return v.replace(/[^0-9.\-]/g, "");
}, useFieldPlugin: (!!$.fn.getValue), onParseError: null, onParseClear: null};
$.Calculation = {version: "0.4.07",setDefaults: function(options) {
$.extend(defaults, options);
}};
$.fn.parseNumber = function(options) {
var aValues = [];
options = $.extend(options, defaults);
this.each(function () {
var $el = $(this),sMethod = ($el.is(":input") ? (defaults.useFieldPlugin ? "getValue" : "val") : "text"),v = $.trim($el[sMethod]()).match(defaults.reNumbers, "");
if (v == null) {
v = 0;
if (jQuery.isFunction(options.onParseError)) options.onParseError.apply($el, [sMethod]);
$.data($el[0], "calcParseError", true);
} else {
v = options.cleanseNumber.apply(this, [v[0]]);
if ($.data($el[0], "calcParseError") && jQuery.isFunction(options.onParseClear)) {
options.onParseClear.apply($el, [sMethod]);
$.data($el[0], "calcParseError", false);
}
}
aValues.push(parseFloat(v, 10));
});
return aValues;
};
$.fn.calc = function(expr, vars, cbFormat, cbDone) {
var $this = this, exprValue = "", precision = 0, $el, parsedVars = {}, tmp, sMethod, _, bIsError = false;
for (var k in vars) {
expr = expr.replace((new RegExp("(" + k + ")", "g")), "_.$1");
if (!!vars[k] && !!vars[k].jquery) {
parsedVars[k] = vars[k].parseNumber();
} else {
parsedVars[k] = vars[k];
}
}
this.each(function (i, el) {
var p, len;
$el = $(this);
sMethod = ($el.is(":input") ? (defaults.useFieldPlugin ? "setValue" : "val") : "text");
_ = {};
for (var k in parsedVars) {
if (typeof parsedVars[k] == "number") {
_[k] = parsedVars[k];
} else if (typeof parsedVars[k] == "string") {
_[k] = parseFloat(parsedVars[k], 10);
} else if (!!parsedVars[k] && (parsedVars[k] instanceof Array)) {
tmp = (parsedVars[k].length == $this.length) ? i : 0;
_[k] = parsedVars[k][tmp];
}
if (isNaN(_[k])) _[k] = 0;
p = _[k].toString().match(/\.\d+$/gi);
len = (p) ? p[0].length - 1 : 0;
if (len > precision) precision = len;
}
try {
exprValue = eval(expr);
if (precision) exprValue = Number(exprValue.toFixed(Math.max(precision, 4)));
后面还有 49 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
