我有一个基于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));
}
答案 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);
});
}