2016-08-30 5 views
0

Ich habe eine JavaScript-Funktion, mit der ich einen Hyperlink deaktivieren und es tut den Trick. Jetzt nach ein paar Sekunden sagen wir nach 4 Sek. Ich möchte den Link aktivieren. Ich bin mir nicht sicher, wie ich das machen soll. Ich habe eine Funktion geschrieben, um den Link zu aktivieren, aber es funktioniert nicht.Aktivieren Sie href mit JavaScript

Kann jemand bitte helfen, JavaScript zu verwenden.

JS Funktionen

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

function enableDownloadReportLink() { 
    document.getElementById('downloadReportLink').href.disabled = false; 
    } 
+0

könnte es einfacher sein, das Element zu verstecken/zeigen, dass hat Das 'href' Attribut – Patrick

+0

Wie wird disableDownloadReportLink aufgerufen? –

+0

Einfach einen Timer setzen, hier ein Beispiel http://stackoverflow.com/questions/21721159/how-to-set-timer-on-body-onload – Guenther

Antwort

0

Fügen Sie eine Klasse .inactive hinzu, mit der Sie ein click-Ereignis an e.preventDefault() binden würden;

Entfernen Sie nach 4 Sekunden die Klasse.

0

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

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

 
var el = document.getElementById("wop"); 
 

 
disableDownloadReportLink(el); 
 

 
setTimeout(
 
    function() { 
 
    enableDownloadReportLink(el); 
 
    }, 
 
    4000 
 
);
<a id="wop" href="http://www.google.com">I will work after 4 seconds!</a>

Im Grunde, was Sie mit disableDownloadReportLink getan haben, ist zu deaktivieren, was das onclick Ereignis tut. Was Sie tun können, wenn Sie die Verbindung wollen, ist wieder normal arbeiten zu setzen onclick-undefined:

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

Sie den Anruf zu enableDownloadReportLink in eine setTimeout, um es zu tun nach 4 Sekunden setzen können:

setTimeout(
    function() { 
    enableDownloadReportLink(link);                                
    }, 
    4000 
); 

Für Ihre Frage, wie diese Funktionen zu nennen, ist es das, was ich tun würde, wie ich Ihnen in meinem Kommentar gesagt (nicht diese Schnipsel erwarten, zu arbeiten, ist nur ein Beispiel):

function doEverything(link) { 
 
    // submit integration report 
 
    document.getElementById('viewIntegrationReport').submit(); 
 

 
    // disable link 
 
    disableDownloadReportLink(link); 
 

 
    // enable link after 4 seconds 
 
    setTimeout(
 
    function() { 
 
     enableDownloadReportLink(link); 
 
    }, 
 
    4000 
 
); 
 
}
<a href="#x" id="downloadReportLink" title="This function will provide you a 30 day download of all your eSign transactions." onclick="doEverything(this);"><span>Export E-Sign Information</span></a>

+0

Wie würdest du diese Funktionen dann nennen? – Jaykumar

+0

Ich denke, du hast schon alles, was du brauchst. Wie Sie diese Funktionen aufrufen, bleibt Ihnen überlassen. Warum rufst du nicht eine Funktion an (wenn du auf den Link klickst), die alles erledigt, anstatt den Aufruf von drei Funktionen im Link-onclick einzubinden? Diese neue Funktion wird das 'submit()' tun, dann ruft sie die Funktion auf, um die Verbindung zu deaktivieren, und ruft dann (nach 4 Sekunden mit dem 'setTimeout') die Funktion auf, um die Verbindung zu aktivieren. –

+0

Sein Wurffehler. – Jaykumar

2

Grundsätzlich ist das gleiche Muster wie @Vicente Olivert Riera, nur eine andere Implementierung, mit add/remove EventListener ...

<a href="./foo" id="my-link">foo</a> 

<script> 
function disableLink(link) { 
    var handler = function(e) { 
     e.preventDefault(); 
     console.log('click disabled'); 
    } 
    link.addEventListener('click', handler, false); 
    link.dataset.disableHandler = handler; 
} 
function enableLink(link) { 
    if (link.dataset.disableHandler) { 
     link.removeEventListener('click', link.dataset.disableHandler); 
     link.dataset.disableHandler = null; 
    } 
} 

var link = document.getElementById('my-link'); 
disableLink(link); 
link.style.color = 'grey'; 
console.log('link disabled'); 

setTimeout(function(){ 
    enableLink(link); 
    link.style.color = 'blue'; 
    console.log('link enabled'); 
}, 4000); 
</script> 
Verwandte Themen