如何在单击后禁用href

时间:2016-06-16 13:35:49

标签: html xslt

我希望在点击一次后禁用href。

我有以下href:

<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable();">

我添加了点击时调用的onclick事件。 我试图将href更改为空白路径,以便不能再次单击它:这是通过Javascript函数。

function clickAndDisable(link)
{
alert("Entered clickAndDisable function");
this.href="''";
}

我的代码都在xslt文件中。 我在哪里错了?

这是我的更新代码,遵循人们的建议:

<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">

<script type="text/javascript">

function clickAndDisable(link)
{
alert("Entered clickAndDisable function");
link.href="";
}

这会禁止链接工作,我希望链接在第一次点击时工作,但在任何其他时间单击它都不起作用.....

4 个答案:

答案 0 :(得分:1)

如果你可以使用jQuery,那么你可以在第一次点击时附加一个类,然后在之后阻止默认。

$('a').on("click", function (e) {
    if($('a').hasClass('clicked'){
        e.preventDefault();
    } else {
        $('a').addClass('clicked');
    }
});

This Fiddle显示了一个示例

编辑:正如Johannes H.指出的那样jQuery不是必需的,这可以在纯JS中完成,如here

答案 1 :(得分:0)

首先:.href="''"不会将href属性设置为空值,而是设置为字符串''。相反,.href=""会做你尝试过的。

第二:this引用内联onclick处理程序中事件的源元素。但是,在事件处理程序中调用函数时,this没有特殊处理,因此函数内对this的任何引用都将指向window对象。

要解决此问题,您可以:

1)将元素传递给你的函数:

<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">
function clickAndDisable(link)
{
    alert("Entered clickAndDisable function");
    link.href="";
}

2)使用Function.prototype.call()

<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable.call(this);">
function clickAndDisable()
{
    alert("Entered clickAndDisable function");
    this.href="";
}

3)使用Javascript附加事件处理程序并转储内联处理程序(在这种情况下,this将被设置为在调用处理函数时触发处理程序的EventTarget

<a href="BeginPayment.aspx?PayPal=true" id ="link">
function clickAndDisable()
{
    alert("Entered clickAndDisable function");
    this.href="";
}

document.getElementById('link').attachEventListener('click', clickAndDisable);

第三:加载@ SamAnderson的答案,而不是为href设置一个空值,你也可以在第一次调用时设置一个标志,并评估它是否已在以后的调用中设置,如果是,请使用{{ 1}}以防止超链接表单的正常操作发生:

Event.preventDefault()
<a href="BeginPayment.aspx?PayPal=true" id ="link">

答案 2 :(得分:0)

您可以使用像

这样的Javascript
   function clickAndDisable(link) {
     link.onclick = function(event) {
        event.preventDefault();
     }
   }   

<a href="BeginPayment.aspx?PayPal=true" id ="link" onclick="javascript:clickAndDisable(this);">

答案 3 :(得分:0)

我最终在使用以下javascript函数单击后禁用了href:

function check(link) {
if (link.className != "visited") {
   //alert("new");
   link.className = "visited";
   return true;    
}
//alert("old");
return false;

}