Come fare in modo che un pulsante reindirizzi a un'altra pagina usando jQuery o solo Javascript


101

Sto realizzando un prototipo e desidero che il pulsante di ricerca si colleghi a una pagina dei risultati di ricerca di esempio.

Come faccio a reindirizzare un pulsante a un'altra pagina quando viene cliccato usando jQuery o JS normale.


Avevo chiesto js perché non immaginavo che fosse disponibile una semplice soluzione HTML. Grazie, ha risolto il mio scopo.
Ankur

Risposte:


64

Senza script:

<form action="where-you-want-to-go"><input type="submit"></form>

Meglio ancora, dato che stai andando da qualche parte, presenta all'utente l'interfaccia standard per "andare da qualche parte":

<a href="where-you-want-to-go">ta da</a>

Anche se il contesto suona come "Simula una normale ricerca in cui l'utente invia un modulo", nel qual caso la prima opzione è la strada da percorrere.


13
Chi avrebbe pensato a un collegamento? haha
meouw

+1 per il modulo. Poiché alla fine sarà un modulo di ricerca appropriato, dovresti farlo ora, se possibile.
Capra scontenta

@suhail - Il triplo del codice e la dipendenza da JavaScript non sono buoni.
Quentin

1
@ayjay - Facendo clic su un pulsante di invio si invia un modulo solo se il pulsante di invio è associato a quel modulo. Mettere l'input in esso è il modo tradizionale e meglio supportato per farlo.
Quentin

1
@mimi - No, non è così. I problemi di reinvio del modulo si verificano solo quando si effettua una richiesta che non è "sicura" (nel qual caso dovrebbe essere un modulo POST ... ma la domanda era sulla navigazione semplice, quindi non c'è motivo per non pensare che sia sicura). I browser avvertono le persone solo della possibilità quando la richiesta potrebbe non essere sicura (quindi non lo faranno in questo caso perché non lo è method="POST").
Quentin

201

è ciò che intendi?

$('button selector').click(function(){
   window.location.href='the_link_to_go_to.html';
})

1
Secondo questa domanda e risposta di stackoverflow , ci si dovrebbe spingere verso window.locatione non document.locationperché non è il modo canonico.
Jujhar Singh

74
$('#someButton').click(function() {
    window.location.href = '/some/new/page';
    return false;
});

5
perché restituire falso?
Francisco Corrales Morales

2
Senza il return false, premere il tasto "Invio o Ritorno" potrebbe semplicemente portarti all'URL corrente invece di reindirizzare al nuovo collegamento. Particolarmente utile, quando si dispone di un controllo di input di testo che si desidera pubblicare su un URL diverso quando si preme il tasto invio / ritorno.
Faith vince il

2
Non è una buona spiegazione. Il valore restituito indica se continuare a elaborare l'evento. Per impostazione predefinita, l'evento continuerà a comparire e potrebbe attivare altre azioni, come l'invio di un modulo, l'accesso a un collegamento o nulla. Tuttavia, vuoi davvero "assorbire" l'evento qui. Restituendo false, l'elaborazione dell'evento terminerà qui.
redreinard

1
grazie - il ritorno falso mi ha salvato - mi chiedevo perché l'URL non cambiasse - ma purtroppo qualche altro script deve aver continuato a elaborare il clic.
Derrick Dennis

22

Nel tuo html, puoi aggiungere l'attributo di dati al tuo pulsante:

<button type="submit" class="mybtn" data-target="/search.html">Search</button>

Quindi puoi usare jQuery per cambiare l'URL:

$('.mybtn').on('click', function(event) {
    event.preventDefault(); 
    var url = $(this).data('target');
    location.replace(url);
});

Spero che questo ti aiuti


2020: la migliore risposta per me a causa del bit sul data-target ... Grazie !!!
MarcoZen

21

Con un semplice Javascript:

<input type="button" onclick="window.location = 'path-here';">


10

Non c'è bisogno di javascript, basta racchiuderlo in un link

<a href="http://www.google.com"><button type="button">button</button></a>

Ankur non ha chiesto HTML5 valido, ha chiesto una soluzione per il suo prototipo
Owen

9

Questo dovrebbe funzionare ..

$('#buttonID').click(function(){ window.location = 'new url'});

7

Puoi usare window.location

window.location="/newpage.php";

Oppure puoi semplicemente fare in modo che il modulo in cui si trova il pulsante di ricerca abbia un'azione della pagina che desideri.


4

Puoi utilizzare questo semplice codice JavaScript per fare in modo che il pulsante di ricerca rimandi a una pagina dei risultati di ricerca di esempio. Qui sono stato reindirizzato a "/ search" della mia home page. Se desideri eseguire la ricerca dal motore di ricerca di Google, puoi utilizzare " https://www.google.com/search " nell'azione del modulo.

<form action="/search"> Enter your search text: 
<input type="text" id="searchtext" name="q"> &nbsp;
<input onclick="myFunction()" type="submit" value="Search It" />
</form> 
<script> function myFunction() 
{ 
var search = document.getElementById("searchtext").value; 
window.location = '/search?q='+search; 
} 
</script>

2

Dal codice YT 2012.

<button href="https://stackoverflow.com/signin" onclick=";window.location.href=this.getAttribute('href');return false;">Sign In</button>


2

questo è il modo PIÙ VELOCE (più leggibile, meno complicato) per farlo, Owens funziona ma non è HTML legale, tecnicamente questa risposta non è jQuery (ma poiché jQuery è uno pseudocodice pre-preparato - reinterpretato sulla piattaforma client come JavaScript nativo - c'è davvero è una cosa come jQuery comunque)

 <button onclick="window.location.href='http://www.google.com';">Google</button>

0

E in Rails 3 con CoffeeScript utilizzando JavaScript (UJS) non invadente:

Aggiungi a assets/javascripts/my_controller.js.coffee:

$ ->
  $('#field_name').click ->
    window.location.href = 'new_url'

che legge: quando l'evento document.ready è stato attivato, aggiungi un onclickevento a un oggetto DOM il cui ID è field_nameche esegue il javascriptwindow.location.href='new_url';


0

Ci sono molte domande qui sul reindirizzamento lato client e non posso rispondere alla maggior parte di esse ... questa è un'eccezione.

Il reindirizzamento non dovrebbe provenire dal client ... dovrebbe provenire dal server. Se non hai il controllo sul server, puoi certamente usare Javascript per scegliere un altro URL a cui andare, ma ... quello non è il reindirizzamento. Il reindirizzamento viene eseguito con 300 codici di stato sul server o applicando il tag META in HTML.


0

Usa un link e definiscilo come un pulsante:

<a href="#page2" class="ui-btn ui-shadow ui-corner-all">Click this button</a>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.