如何使用JavaScript禁用锚点?

17

根据条件,我需要禁用锚点链接,如果某些数据填入该字段,则应将其作为超链接工作,否则该链接不应存在。对此有任何想法都欢迎。

5个回答

28

案例1:

禁用:

document.getElementById(id).style.pointerEvents="none";
document.getElementById(id).style.cursor="default";

启用:

document.getElementById(id).style.pointerEvents="auto";
document.getElementById(id).style.cursor="pointer";

情况2:

如果您希望链接消失(而不仅是禁用它):

document.getElementById(id).style.display="none";

要将其找回:

document.getElementById(id).style.display="block"; //change block to what you want.

第三种情况:

如果您想隐藏它并保留空间:

document.getElementById(id).style.visibility="hidden";

要重新获得它:

document.getElementById(id).style.visibility="visible";

2
这很好,因为它适用于具有 href 或 onclick 的情况。 - MDM
你太棒了,Jahin Saab。这是唯一对我有效的解决方案。希望有人能解释为什么prop(disable...)方法对锚点无效。 - Desper

20

我无法理解你的问题正文,所以我将回答你问题的标题...

如何使用JavaScript禁用锚点?

JavaScript

if (condition) {
    document.getElementsByTagName('a')[0].removeAttribute('href');
}

jQuery

因为所有人都在使用它,对吧?

if (condition) {
    $('a').first().removeAttr('href');
}

3
我认为即使是jQuery,使用removeAtt也可能会失败 :) - thirtydot
1
@thirtydot 哎呀,我想我忘记了一个 r :) - alex
2
这也适用于document.getElementById(_yourIdHere_)。removeAttribute('href'); - Solid1Snake1

3
使用jQuery
if(!data){
  $('#linkID').click(function(e) {
    e.preventDefault();
  });
}

使用Prototype

if(!data){
  $('linkID').observe('click', function(event) { event.stop() });
}

2
为什么不使用另一个框架,比如MooTools,这是OP没有提到的呢? :P - alex
1
我想表达的意思是,当 OP 没有指定库时,你用了库代码来回答问题。 - alex
@alex 是的,我知道只用 jQuery 就可以做到它 ;-) - Mithun Sreedharan
5
OP甚至都没有提到jQuery,而获得最高票答案...... 真是荒谬。 - Matt

1
<a href="javascript:check()">my link</a>

function check(){
var data =document.getElementById("yourdatafield").value;
if(data)
  window.location="your_link_location";

}

我想知道如果数据为空会发生什么。 - Mithun Sreedharan
@Mithun:如果需要的话,我们可以在if语句中检查。 - Anupam

-4
使用jQuery:
禁用:
$('#anchor_tag').attr("disabled", true);

启用:

$('#anchor_tag').attr("disabled", false);

1
这在锚点上行不通。 - Rafael Herscovici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接