2016-08-31 34 views
0

JavaScriptを使用してアンカーエレメントを有効にしようとしていますが、構文の問題があるようです。ディセーブル部分は正常に機能しますが、アンカーは一定時間後に有効になりません。JavaScriptを使用してアンカータグを無効/有効にする

フォーム:

<a id="downloadReportLink" 
    href="#x" 
    title="This function will provide you a 30 day download of all your eSign transactions." 
    onclick="document.getElementById('viewIntegrationReport').submit(), doEverything(this)"> 

    <span>Export E-Sign Information</span> 
</a> 

JS機能:

function disableLink(link) { 
    link.onclick = function(event) { 
     event.preventDefault(); 
    } 
} 

function enableLink(link) { 
    link.onclick = undefined; 
} 

function doEverything(link) { 
    disableLink(link); 
    setTimeout(function() { 
      enableLink(link); 
     }, 
     4000 
    ); 
} 

私はlink.onclick = undefinedがアンカーを有効にするだろうが、そうでないと仮定。

ここで何か間違っていますか?

+1

、できるだけ早くブラウザはフォームを送信し、他のjavascriptは実行されません。 – user3733648

+0

コンマはセミコロンであってはなりませんか? 'document.getElementById( 'viewIntegrationReport')。submit()、doEverything(this)' – ray

+0

あなたのコードは、4秒の間隔の間にリンクをクリックすると '#x'にナビゲートされず、その期間が過ぎると、それが実行されます。しかし、それは実際にあなたがしたいことですか? 4秒前、途中、後にリンクをクリックして何をしたいですか? – smarx

答えて

1

それはあなたがをしたいどんな行動少しは不明だが、あなたは4秒間隔の後にアンカータグの元onclickを復元したいと仮定すると、私はこれが機能すると思いますあなたのために。 link.onclickundefinedに設定していましたが、以前の設定に戻したいと思っています。

は(私はまた、あなたがフォーム送信傍受し、実際にページから離れて航行していないと仮定しています。)あなたが最初にフォームを送信している

function disableLink(link) { 
 
    link.onclick = function(event) { 
 
     event.preventDefault(); 
 
    } 
 
} 
 

 
function enableLink(link, onclick) { 
 
    link.onclick = onclick; 
 
} 
 

 
function doEverything(link) { 
 
    var oldOnclick = link.onclick; 
 
    disableLink(link); 
 
    setTimeout(function() { 
 
     enableLink(link, oldOnclick); 
 
    }, 4000); 
 
}
<a id="downloadReportLink" 
 
    href="#x" 
 
    title="This function will provide you a 30 day download of all your eSign transactions." 
 
    onclick="console.log('SUBMITTING'); doEverything(this); return false;"> 
 

 
    <span>Export E-Sign Information</span> 
 
</a>

+0

これは私が探していたものです。これは最高です。あなたの助けを借りてありがとうございました。 – Jaykumar

-1

これを試してみてください:

function disableLink(link) { 
link.addEventListener("click", function(){ 
return false; 
}); 

} 

function enableLink(link) { 
link.addEventListener("click", function(){ 
return true; 
}); 
関連する問題