在javascript中禁用href链接

时间:2015-11-13 07:10:08

标签: javascript

我想在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。 谢谢:-)

2 个答案:

答案 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);