Jquery禁用按钮/连接功能

/**
 * 对Date的扩展,将 Date 转化为指定格式的String
 * 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * 例子:
 * (new Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
 */
Date.prototype.format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

/**
 * 防止某个URL的重新请求
 * @param domId
 */
function reduceRequest(domId, event, expire) {
    // 支持秒级别的过期设置
    var date = new Date();
    date.setTime(date.getTime()+expire*1000);

    // 获取当前的form
    var cookie_name = 'submit_'+ $.trim($(this).closest('form').attr("action"));
    $.cookie(cookie_name);

    if($.cookie(cookie_name) != null){
        //阻止默认提交事件
        event.preventDefault();
        alert("请喝杯咖啡休息下");return false;
    }else{
        // 设置过期时间
        $.cookie(cookie_name, (new Date()).format("yyyy-MM-dd HH:mm:ss"), { expires: date });
        return true;
    }
}

/**
 * 在指定的时间内禁用某个对象
 */
function diableDom(domId, expire) {
    var tagName = $("#"+domId).prop("tagName");

    if(tagName=="A") {
        // 提取之前的URL
        var url = $("#"+domId).attr("href");
        // 设置空连接
        $("#"+domId).attr("href", "#");
        // 超时重置连接
        var t = setTimeout("$(\"#"+domId+"\").attr(\"href\", \"" + url + "\")", expire * 1000);
    }
    else if(tagName=="INPUT") {
        // 禁用输入框
        $('#'+domId).prop("disabled","disabled");
        // 重新启用输入框
        var t = setTimeout("$(\"#"+domId+"\").removeAttr(\"disabled\")",expire * 1000);
    }
}

$(document).ready(function(){
    // 禁用ID列表
    var domIds=new Array("btnQuery");
    var expire = 10;

    $.each(domIds, function(index,domId){
        $("#"+domId).click(function(event) {
            //diableDom(domId, expire);
            reduceRequest(domId, event, expire);
        });
    });
});

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在Javascript分类目录。将固定链接加入收藏夹。