onClick条件执行加载

时间:2013-09-13 03:27:16

标签: javascript ajax jquery

我有一个基于php的授权设置,可以将授权级别加载到JS变量中,我想根据authlevel禁用onclick事件。

我已经编写/借用了以下部分,它可以很好地执行带有参数的任意函数(来自其他优秀的stackoverflow帖子)。我用传递参数的函数对它进行了测试,效果很好。

function checkauth(authlevel, reqauthlevel, callback, message) {
    // Handle custom message or lack thereof
    message = (typeof message === "undefined") ? "You do not have authorization for this action" : message;

    if (authlevel >= reqauthlevel) {
        callback()
    }
    else {
        alert(message)
    }
}
function partial(func /*, 0..n args */) {
    var args = Array.prototype.slice.call(arguments, 1);
    return function() {
        var allArguments = args.concat(Array.prototype.slice.call(arguments));
        return func.apply(this, allArguments);
    };
}

但是当我调用它来处理按钮事件时,我会使用下面的代码在页面加载时获得auth消息。有没有更好的方法来处理事件以选择性地忽略它们?我知道我可以使用php来创建按钮,或者js来删除它们或者有选择地生成它们,但是我希望将它们作为UI体验的演示而没有动作结果。 TIA - c

$(function(){
    $('#spdownbutton').click(checkauth(authlevel, 2, function(){
        var selectedchannelname=document.getElementById("selectchannel").value
         $.ajax({
            url: "/wsgiupdatecontrol",
            type: "post",
            datatype:"json",
            data
                {'action':'spchange','subaction':'incdown','database':controldatabase,'channelname':selectedchannelname},
            success: function(response){
                setTimeout(UpdateChannelData,updatetimeout)
            }
         });
     }, stdmessage));
}

1 个答案:

答案 0 :(得分:0)

试试这个:

$(function(){
    $('#spdownbutton').click(function(){
        checkauth(authlevel, 2, function(){
        var selectedchannelname=document.getElementById("selectchannel").value
         $.ajax({
            url: "/wsgiupdatecontrol",
            type: "post",
            datatype:"json",
            data
                {'action':'spchange','subaction':'incdown','database':controldatabase,'channelname':selectedchannelname},
            success: function(response){
                setTimeout(UpdateChannelData,updatetimeout)
            }
         });
     }, stdmessage);
    });
}