Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用按钮时如何替换事件处理程序_Javascript_Jquery_Html_Asp.net_Onclick - Fatal编程技术网

Javascript 禁用按钮时如何替换事件处理程序

Javascript 禁用按钮时如何替换事件处理程序,javascript,jquery,html,asp.net,onclick,Javascript,Jquery,Html,Asp.net,Onclick,我遇到的情况是,我必须将UI中所有未经授权的控件从隐藏状态替换为禁用状态。添加带有未授权文本的工具提示。单击控件以查看未经授权的文本 我能够更新代码,但在某个点被阻止,我必须停止在控件上触发事件。 同时,我必须在点击事件时显示警报。我该怎么做 问题: 我有[clickdisabled=disable]单击功能,如果控件被禁用,则需要调用该功能。 但同时在我调用的控件onclick=“SearchDetails();上抛出了一个错误 <input id="btnSearch" type="

我遇到的情况是,我必须将UI中所有未经授权的控件从隐藏状态替换为禁用状态。添加带有未授权文本的工具提示。单击控件以查看未经授权的文本

我能够更新代码,但在某个点被阻止,我必须停止在控件上触发事件。 同时,我必须在点击事件时显示警报。我该怎么做

问题: 我有[clickdisabled=disable]单击功能,如果控件被禁用,则需要调用该功能。 但同时在我调用的控件onclick=“SearchDetails();上抛出了一个错误

<input id="btnSearch" type="button" name="btnSearch" value="Search" onclick="SearchDetails();return false;" title="search" clickDisabled=disable />

//Add title to all disabled items in project
$('[clickdisabled=disable]').attr("title", "You are not authorized to perform this action.");

//  Show unauthorized error on click of disabled control
$('[clickdisabled = disable]').click(function () {
    alert($(this).attr("title"));
});

//为项目中的所有禁用项添加标题
$('[clickdisabled=disable]')。attr(“标题”,“您无权执行此操作”);
//单击禁用的控件时显示未经授权的错误
$('[clickdisabled=disable]')。单击(函数(){
警报($(this.attr)(“title”);
});

您可以防止这样的默认处理:

var button = $('#your_button_id');
button.click(function(e){
    e.preventDefault();
    alert("Your alert message for the user");
});    

如果预期函数不可用,可以在调用函数之前检查它们是否存在:

<input id="btnSearch" type="button" name="btnSearch" value="Search" 
onclick="if (typeof(SearchDetails) === typeof(Function)) SearchDetails();"
 title="search" clickDisabled=disable />


您需要做的是跟踪正常的onclick事件处理程序和禁用的onclick事件处理程序。禁用按钮时,删除正常的onclick事件处理程序并添加禁用的onclick事件处理程序。重新启用按钮时,删除禁用的onclick事件处理程序并添加正常的事件处理程序back、 您可以通过jQuery和事件来实现这一点(参见下面的示例)

正常单击(e)上的函数{ 警报(“这是默认的测试按钮功能”); } 功能取消单击(e){ 警报(“此按钮已禁用”); e、 预防默认值(); e、 停止传播(); } 功能禁用按钮(选择器){ $(选择器).css('color','#888'); $(选择器).off('click',onNormalClick); $(选择器).on('click',onDisabledClick); } 功能启用按钮(选择器){ $(选择器).css('color','#000'); $(选择器).off('click',onDisabledClick); $(选择器).on('click',onNormalClick); } $(文档).ready(函数(){ $('.test')。on('click',onNormalClick); $(“#禁用程序”)。单击(函数(){ 禁用按钮('.test'); }); $(“#启用码”)。单击(函数(){ 启用按钮('.test'); }); });

试验

使残废
启用
为确保我理解您的意思,您想替换
SearchDetails()当按钮被禁用时,使用另一个事件处理程序的
方法?正确。但我希望他的替换对于项目中的所有文件都是通用的。因此我尝试将禁用的元素事件设置为优先级,并在如何实现这一点上受到了启发。我假设您还希望还原该操作,以便
SearchDetails()
当按钮重新启用时,再次成为事件处理程序?绝对正确的3D。请继续关注…Minato比您花了这么多时间。但是您提供的代码对我不起作用。这是我尝试删除属性clickDisabled=disable的小提琴,它没有调用SearchDetails函数。您必须取消注释第二个在JS上创建一行,以查看它在定义函数时的工作情况