tp5模板中js方法中url函数传参的解决办法

浏览:1837 发布日期:2018/05/31 分类:功能实现 关键字: 传参
tp5模板中js方法中url函数传参的解决办法
<script>
// js全局变量
window.core = {
baseUrl: "{:request()->root()}/",
route: ['{:request()->module()}', '{:request()->controller()}', '{:request()->action()}'],
tpl: {
root: '__ROOT__',
static: '__STATIC__',
img: '__IMG__',
js: '__JS__',
css: '__CSS__'
}
};
</script>/**
 * @Author:Byron Sampson
 * @Date:2018/4/17
 * @Last Modified by:byron
 * @Last Modified time: 2018/4/17
 * +----------------------------------------------------------------------
 * | F2eer [ 前端巴士 ]
 * | Copyright (c) 2018-2019 http://www.f2eer.net All rights reserved.
 * | Licensed ( http://www.f2eer.net/licenses/ )
 * | Author: xiaobo.sun <xiaobo.sun@f2eer.net>
 * +----------------------------------------------------------------------
 */
var core = window.core;

/* 基础对象检测 */
core || $.error("js-core基础配置没有正确加载!");

/**
 * 解析URL
 * @param  {string} url 被解析的URL
 * @return {object}     解析后的数据
 */
core.parse_url = function(url){
    var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
    parse || $.error("url格式不正确!");
    return {
        "scheme"   : parse[1],
        "host"     : parse[2],
        "port"     : parse[3],
        "path"     : parse[4],
        "query"    : parse[5],
        "fragment" : parse[6]
    };
}

core.parse_str = function(str){
    var value = str.split("&"), vars = {}, param;
    for(val in value){
        param = value[val].split("=");
        vars[param[0]] = param[1];
    }
    return vars;
}

core.parse_name = function(name, type){
    if(type){
        /* 下划线转驼峰 */
        name = name.replace(/_([a-z])/g, function($0, $1){
            return $1.toUpperCase();
        });

        /* 首字母大写 */
        name = name.replace(/[a-z]/, function($0){
            return $0.toUpperCase();
        });
    } else {
        /* 大写字母转小写 */
        name = name.replace(/[A-Z]/g, function($0){
            return "_" + $0.toLowerCase();
        });

        /* 去掉首字符的下划线 */
        if(0 === name.indexOf("_")){
            name = name.substr(1);
        }
    }
    return name;
}

//scheme://host:port/path?query#fragment
core.url = function(url, vars, suffix){
    var info = this.parse_url(url), path = [], param = {}, reg;

    /* 验证info */
    info.path || $.error("url格式错误!");
    url = info.path;

    /* 解析URL */
    path = url.split("/");
    path = [path.pop(), path.pop(), path.pop()].reverse();

    path[1] = path[1] || this.route[1];
    path[0] = path[0] || this.route[0];

    param[this.route[0]] = path[0];
    param[this.route[1]] = path[1];
    param[this.route[2]] = path[2].toLowerCase();

    url = param[this.route[0]] + '/' + param[this.route[1]] + '/' + param[this.route[2]];

    /* 解析参数 */
    if(typeof vars === "string"){
        vars = this.parse_str(vars);
    } else if(!$.isPlainObject(vars)){
        vars = {};
    }

    /* 添加伪静态后缀 */
    if(false !== suffix){
        suffix = suffix || 'html';
        if(suffix){
            url += "." + suffix;
        }
    }

    /* 解析URL自带的参数 */
    info.query && $.extend(vars, this.parse_str(info.query));
    if(vars){
        var param_str = $.param(vars);
        if('' !== param_str) {
            url += (url.indexOf('?') !== -1 ? '&' : '?') + param_str;
        }
    }

    url = this.baseUrl + url;

    return url;
}

/* 设置表单的值 */
core.setValue = function(name, value){
    var first = name.substr(0,1), input, i = 0, val, len;
    if(value === "") return;
    if("#" === first || "." === first){
        input = $(name);
    } else {
        input = $("[name='" + name + "']");
    }

    if(input.eq(0).is(":radio")) { //单选按钮
        input.filter("[value='" + value + "']").each(function(){this.checked = true;});
    } else if(input.eq(0).is(":checkbox")) { //复选框
        if(!$.isArray(value)){
            val = new Array();
            val[0] = value;
        } else {
            val = value;
        }
        for(i = 0, len = val.length; i < len; i++){
            input.filter("[value='" + val[i] + "']").each(function(){this.checked = true});
        }
    } else {  //其他表单选项直接设置值
        input.val(value);
    }
}

/* 上移tr */
core.moveUp = function(tr) {
    var current = $(tr); //获取当前<tr>
    var prev = current.prev();  //获取当前<tr>前一个元素
    if (current.index() > 0) {
        current.insertBefore(prev); //插入到当前<tr>前一个元素前
    }
}

/* 下移tr */
core.moveDown = function(tr) {
    var current = $(tr); //获取当前<tr>
    var next = current.next(); //获取当前<tr>后面一个元素
    if (next) {
        current.insertAfter(next);  //插入到当前<tr>后面一个元素后面
    }
}

/**
 * 数字前置补零
 * @param num
 * @param length
 * @returns {*}
 */
core.digit = function(num, length){
    var str = '';
    num = String(num);
    length = length || 2;
    for(var i = num.length; i < length; i++){
        str += '0';
    }
    return num < Math.pow(10, length) ? str + (num|0) : num;
}

/**
 * 格式化时间戳
 * @param time
 * @param format
 * @returns {string}
 */
core.format_time = function(time, format){
    // 处理长度为11位以内的时间戳
    time = time.toString().length <= 11 ? parseInt(time) * 1000 : time;

    var that = this
        ,date = new Date(time || new Date())
        ,ymd = [
        that.digit(date.getFullYear(), 4)
        ,that.digit(date.getMonth() + 1)
        ,that.digit(date.getDate())
    ]
        ,hms = [
        that.digit(date.getHours())
        ,that.digit(date.getMinutes())
        ,that.digit(date.getSeconds())
    ];

    format = format || 'yyyy-MM-dd HH:mm:ss';

    return format.replace(/yyyy/g, ymd[0])
        .replace(/MM/g, ymd[1])
        .replace(/dd/g, ymd[2])
        .replace(/HH/g, hms[0])
        .replace(/mm/g, hms[1])
        .replace(/ss/g, hms[2]);
}
评论() 相关
后面还有条评论,点击查看>>