I have two links inside a button but the links don't seem to work on Firefox.
<button class="btn login">
<a href="/login"><b>Log In</b></a>
|
<a href="/signup"><b>Sign Up</b></a>
</button>
I tried JavaScript onclick and redirecting - even that is not working.
Or, you can put the button inside the anchor, it won't have the exact same look since it'll be two different buttons, but it will be a button that acts as a link. It's still not technically correct but it does work in FireFox.
This doesn't work because it is not allowed by HTML5:
Interactive content means any of the following elements:
If it does work in some browsers it's just because they're trying to play nice with malformed markup and provide some sort of meaningful result.
In other words: rewrite your HTML, it's a mess. If you want the links to look like they're in a button, put them in a
div
element and style that to look like one, instead of abusing semantically wrong elements for it.<a>
is not allowed inside<button>
<a>
is interactive content (regardless of whether it has anhref
apparently, but yours do). Thus you can't depend on having the links as children of the button and what Firefox is doing is correct. Use another element to contain the<a>
sUse javascript: window.location for the button.
You can add this in the button element.
onclick="window.location.href='/link1'"
Example
<button onclick="window.location.href='/login'">Login</button>
“Yeah, but let me stop you right there …”
http://www.w3.org/TR/html5/forms.html#the-button-element:
So, if you are writing invalid HTML, expect unexpected behavior ;-)