2016-06-16 12 views
1

hrefを一度クリックした後に無効にしたいと考えています。ワンクリックで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=""; 
} 

これは、すべてで働いてからリンクを無効にし、私はそれがクリックされた最初の時間を作業するためのリンクをご希望のが、動作しませんそれ以外の時間にクリックした場合.....

+0

あなたはjQueryのを使用することはできますか? –

+1

アラートはトリガーされますか? – 4castle

+0

はい、アラームがトリガされているので、関数を入力しています – Mike

答えて

0

次のjavascript関数を使用して1回のクリックでhrefを無効にしました。

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

}

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);"> 
を使用

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

第3回@ SamAndersonの答えを組み込んで、hrefに空の値を設定する代わりに、最初の呼び出しでフラグを設定し、それが後の呼び出しで設定されているかどうかを評価することもできます。あなたはjQueryのを使用することができるなら、あなたはその後最初のクリックしてからでpreventDefault上のクラスを追加することができ

<a href="BeginPayment.aspx?PayPal=true" id ="link"> 
var clicked = false; 

function clickAndDisable(e) 
{ 
    alert("Entered clickAndDisable function"); 
    if (clicked) 
    { 
     e.preventDefault(); 
    } 
    else 
    { 
     clicked = true; 
    } 
} 

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

クリックした変数はどこに置かなければなりませんか?私はこれを次の場所に配置しましたが、「入力されたクリック=真」のアラートはたった今発生します:

関連する問題