我遇到的情况是我必须将My 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"));
});
答案 0 :(得分:1)
如果您期望功能不可用的情况,您可以在调用它们之前检查它们是否存在:
<input id="btnSearch" type="button" name="btnSearch" value="Search"
onclick="if (typeof(SearchDetails) === typeof(Function)) SearchDetails();"
title="search" clickDisabled=disable />
答案 1 :(得分:1)
您需要做的是跟踪正常的onclick事件处理程序和禁用的onclick事件处理程序。禁用按钮后,删除正常的onclick事件处理程序并添加禁用的onclick事件处理程序。重新启用该按钮时,请删除已禁用的onclick事件处理程序,然后添加正常的事件处理程序。您可以使用jQuery .on()
和.off()
事件执行此操作(请参阅下面的示例)。
function onNormalClick(e){
alert('This is the default test button functionality.');
}
function onDisabledClick(e){
alert('This button is disabled.');
e.preventDefault();
e.stopPropagation();
}
function disableButtons(selector){
$(selector).css('color', '#888');
$(selector).off('click', onNormalClick);
$(selector).on('click', onDisabledClick);
}
function enableButtons(selector){
$(selector).css('color', '#000');
$(selector).off('click', onDisabledClick);
$(selector).on('click', onNormalClick);
}
$(document).ready(function(){
$('.test').on('click', onNormalClick);
$('#disabler').click(function(){
disableButtons('.test');
});
$('#enabler').click(function(){
enableButtons('.test');
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class='test'>Test</button>
<hr/>
<button id=disabler>Disable</button>
<button id=enabler>Enable</button>
&#13;
答案 2 :(得分:0)
您可以阻止默认处理,如下所示:
var button = $('#your_button_id');
button.click(function(e){
e.preventDefault();
alert("Your alert message for the user");
});