2011-02-17 6 views
34

Just wondering if there is a way to get a HTML <button> element to link to a location without wrapping it in an <a href... tag?¿Hay una manera de conseguir un elemento <button> para enlazar con una ubicación sin envolverlo en un <a href ... tag?

Button currently looks like:

<button>Visit Page Now</button> 

What I would prefer not to have:

<a href="link.html"><button>Visit Page Now</button></a> 

The button is not being used within a form so <input type="button"> is not an option. I am just curious to see if there is a way to link this particular element without needing to wrap it in an <a href tag.

Looking forward to hearing some options/opinions.

+2

¿Por qué quiere que un botón sea un enlace? ¿Por qué no solo tener un enlace? – robertc

+0

@robertc, normalmente uso un enlace pero, ¿cuál es el sentido de un elemento

+5

El objetivo de un elemento de botón es activar una función de secuencia de comandos, como volver a calcular los costos de entrega en un formulario o aplicar formato en negrita al texto seleccionado, que no es compatible de forma nativa con HTML. Navegar entre páginas es algo que es compatible con HTML, no necesita un script para hacerlo, por lo tanto, no necesita un botón. – robertc

Respuesta

54

Inline Javascript:

<button onclick="window.location='http://www.example.com';">Visit Page Now</button> 

Defining a function in Javascript:

<script> 
    function visitPage(){ 
     window.location='http://www.example.com'; 
    } 
</script> 
<button onclick="visitPage();">Visit Page Now</button> 

or in Jquery

<button id="some_id">Visit Page Now</button> 

$('#some_id').click(function() { 
    window.location='http://www.example.com'; 
}); 
+4

Gracias @aiham, esto funcionó. Para hacerlo más flexible, la url debe ser un argumento para la función visitPage. – Dan

+0

Estoy usando ** ASP.NET MVC **. ¿Cómo puedo 'POST' los datos y dirigirlos a ** Controladores ** a otros ** Métodos de acción **? – barnes

+0

Esta es una respuesta engañosa ya que un elemento de enlace sería el elemento deseado. Separar funcionalidad y diseño al elegir elementos! – roka

4

You can make it a non-submitting button (<button type="button">) and hook something like window.location = 'http://where.you.want/to/go' into its onclick handler. This does not work without javascript enabled though.

Or you can make it a submit button, and do a redirect on the server, although this obviously requires some kind of server-side logic, but the upside is that is doesn't require javascript.

(actually, forget the second solution - if you can't use a form, the submit button is out)

6

Just do this

<button OnClick=" location.href='link.html' ">Visit Page Now</button> 

Although, it's been a while since I've touched JavaScript - maybe location.href is outdated? Anyways, that's how I would do it.

5

Well, for a link, there must be a link tag around. what you can also do is that make a css class for the button and assign that class to the link tag. like,

THE CSS

#btn{ background:url(images/button.jpg) no-repeat 0 0; display:block; width:50px; height:20px; border:none; outline:none;} 

THE HTML

<a href="btnlink.html" id="btn"></a> 
1

Here it is using jQuery. See it in action at http://jsfiddle.net/sQnSZ/

<button id="x">test</button> 

$('#x').click(function(){ 
    location.href='http://cnn.com' 
}) 
22

he aquí una solución que funciona incluso cuando Javascript está deshabilitado:

<form action="login.html"> 
    <button type="submit">Login</button> 
</form> 

El truco es para rodear el botón con su propia etiqueta <form>.

Yo personalmente prefiero la etiqueta <button>, pero puede hacerlo con <input> así:

<form action="login.html"> 
    <input type="submit" value="Login"/> 
</form> 
2

<form action="portfolio.html"> <button type="link" class="btn btn-primary btn-lg">View Work</button> </form>

acabo cuenta de esto, y une perfectamente a otra página sin tener mi defecto configuración de enlace sobre montar mis clases de botón! :)

2

Solo una nota al margen - es posible que desee considerar los trucos que < a href> conoce de forma predeterminada, pero el enlace javascript no hará por usted. A saber:

  • si hace clic con Ctrl, se abrirá una nueva pestaña;
  • si hace clic con Shift, el navegador abre el enlace en una nueva ventana;
  • si hace clic con Alt, es un comando "descargar destino".

Ahora bien, si usted no desea simular el comportamiento de todo lo que me sugieren usar < a href> y el estilo que como un botón, ya que el botón es aproximadamente una forma y un efecto de vuelo estacionario. Creo que si no es semánticamente importante tener solo "el botón y nada más", < a href> es el camino del samurai. Y si te preocupa la semántica y la legibilidad, también puedes reemplazar el elemento del botón cuando tu documento esté listo(). Es claro y seguro

Cuestiones relacionadas