HTML tag <a> want to add both href and onclick working

JavascriptHtmlTagsOnclickHref

Javascript Problem Overview


I'd like to ask about HTML tag

<a href="www.mysite.com" onClick="javascript.function();">Item</a>

How to make this a tag working with href and onClick? (prefer onClick running first then href)

Javascript Solutions


Solution 1 - Javascript

You already have what you need, with a minor syntax change:

<a href="www.mysite.com" onclick="return theFunction();">Item</a>

<script type="text/javascript">
    function theFunction () {
        // return true or false, depending on whether you want to allow the `href` property to follow through or not
    }
</script>

The default behavior of the <a> tag's onclick and href properties is to execute the onclick, then follow the href as long as the onclick doesn't return false, canceling the event (or the event hasn't been prevented)

Solution 2 - Javascript

Use jQuery. You need to capture the click event and then go on to the website.

$("#myHref").on('click', function() {
  alert("inside onclick");
  window.location = "http://www.google.com";
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="myHref">Click me</a>

Solution 3 - Javascript

To achieve this use following html:

<a href="www.mysite.com" onclick="make(event)">Item</a>

<script>
    function make(e) {
        // ...  your function code
        // e.preventDefault();   // use this to NOT go to href site
    }
</script>

Here is working example.

Solution 4 - Javascript

No jQuery needed.

Some people say using onclick is bad practice...

This example uses pure browser javascript. By default, it appears that the click handler will evaluate before the navigation, so you can cancel the navigation and do your own if you wish.

<a id="myButton" href="http://google.com">Click me!</a>
<script>
	window.addEventListener("load", () => {
		document.querySelector("#myButton").addEventListener("click", e => {
			alert("Clicked!");
			// Can also cancel the event and manually navigate
			// e.preventDefault();
			// window.location = e.target.href;
		});
	});
</script>

Solution 5 - Javascript

Use ng-click in place of onclick. and its as simple as that:

<a href="www.mysite.com" ng-click="return theFunction();">Item</a>

<script type="text/javascript">
function theFunction () {
    // return true or false, depending on whether you want to allow 
    // the`href` property to follow through or not
 }
</script>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1589113View Question on Stackoverflow
Solution 1 - JavascriptIanView Answer on Stackoverflow
Solution 2 - JavascriptSudipta ChatterjeeView Answer on Stackoverflow
Solution 3 - JavascriptKamil KiełczewskiView Answer on Stackoverflow
Solution 4 - JavascriptTeamDmanView Answer on Stackoverflow
Solution 5 - Javascriptmak-273View Answer on Stackoverflow