我想在javascript中禁用href链接,但仅限特定时间。
<tr><td width= 40></td><td id="idHardwareInfo_5" class="sub_newmenu_item" ><a href="javascript:fnMenuClickedCustPop()"><% _("Discovery"); %></a></td></tr>
function fnMenuClickedCustPop()
{
fnMenuClicked('XYZ.asp', 'id_5');
alert("This operation may take a few minutes to complete.Please wait...");
}
此XYZ.asp文件包含.inc文件,该文件具有js代码,其功能包括执行循环18次。我想禁用href链接,直到该循环完全从1-18完成,以便在用户之间无法单击链接。这可能是最好的方法吗? PS:我是一个完整的新手javascript。 谢谢:-)
答案 0 :(得分:2)
在循环启动时将以下css类添加到函数中的链接,并在循环结束时将其删除
.not-active {
pointer-events: none;
cursor: default;
}
<a id="link" href="javascript:fnMenuClickedCustPop()"><% _("Discovery"); %></a>
function fnMenuClickedCustPop()
{
alert("This operation may...");
$("#link").addClass('not-active') //when loop is going to start
fnMenuClicked('XYZ.asp', 'id_5');
$("#link").removeClass('not-active') //once loop finishes, you might need to do this inside XYZ.asp where loop runs not here. This is just an indicator
}
答案 1 :(得分:0)
您可以向元素添加事件侦听器以防止单击时的默认行为,然后在您要重新启用href时删除该侦听。 让我们假设您不使用jQuery或任何插件,即vanilla JS,说
你有
<a id="disableForDuration" href="xxxx">link</a>
在JS中,你可以做到
var elem = document.getElementById("disableForDuartion");
var handler = function (evt) {
evt.prevantDefault();
}
elem.addEventListener("click", handler);
// Do whatever stuff....
// when you want to enable the link
elem.removeEventListener("click", handler);