Bir düğmeyi jQuery veya sadece Javascript kullanarak başka bir sayfaya yönlendirme


102

Bir prototip yapıyorum ve arama düğmesinin örnek bir arama sonuçları sayfasına bağlanmasını istiyorum.

Bir düğmeyi jQuery veya düz JS kullanarak tıklandığında başka bir sayfaya nasıl yönlendirebilirim?


Basit bir HTML çözümünün mevcut olduğunu düşünmediğim için js istemiştim. Teşekkürler, amacımı çözdü.
Ankur

Yanıtlar:


65

Komut dosyası olmadan:

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

Daha da iyisi, sadece bir yere gittiğiniz için, kullanıcıya "bir yere gitmek" için standart arayüz sunun:

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

Bağlam, "Kullanıcının bir form gönderdiği normal bir aramayı simüle et" gibi görünse de, bu durumda ilk seçenek gidilecek yoldur.


14
Kim bir bağlantı düşünebilirdi? haha
meouw

Form için +1. Sonunda uygun bir arama formu olacağından, mümkünse şimdi böyle yapmalısınız.
DisgruntledGoat

@suhail - Üç kat fazla kod ve JavaScript'e bağımlılık iyi değil.
Quentin

1
@ayjay - Gönder düğmesinin tıklanması, yalnızca gönder düğmesi bu formla ilişkilendirilmişse bir form gönderir. Girdiyi içine koymak, bunu yapmanın geleneksel ve en iyi desteklenen yoludur.
Quentin

1
@mimi - Hayır, öyle değil. Form yeniden gönderme sorunları yalnızca "güvenli" olmayan bir istekte bulunduğunuzda ortaya çıkar (bu durumda bir POST formu olmalıdır… ancak soru basit gezinmeyle ilgili olduğundan, güvenli olduğunu düşünmemek için bir neden yoktur). Tarayıcılar, insanları yalnızca isteğin güvenli olmayabileceği olasılığı konusunda uyarır (bu durumda olmayacağı için bu durumda olmayacaklardır method="POST").
Quentin

202

Demek istediğin bu mu?

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

1
Göre bu stackoverflow soru-cevap, bir doğru eğilmek gerektiğini window.locationdeğil document.locationo kurallı yolu olmasın da.
Jujhar Singh

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

5
neden yanlış döndürülür?
Francisco Corrales Morales

2
Olmadan return false, isabet "Enter veya Return tuşu" sadece ziyade yeni bağlantı yönlendirmekten daha güncel url'ye alabilir. Enter / return tuşuna bastığınızda farklı bir url'ye göndermek istediğiniz bir metin giriş kontrolünüz olduğunda özellikle kullanışlıdır.
Faith

2
Bu pek iyi bir açıklama değil. Dönüş değeri, olayın işlemeye devam edilip edilmeyeceğini gösterir. Varsayılan olarak, etkinlik balonlaşmaya devam edecek ve bir form göndermek veya bir bağlantıya gitme ya da hiçbir şey gibi başka eylemleri tetikleyebilir. Ancak, burada olayı gerçekten "özümsemek" istiyorsunuz. Yanlış döndürüldüğünde, olay işleme burada sona erecektir.
redreinard

1
teşekkürler - yanlış dönüş beni kurtardı - url'nin neden değişmeyeceğini merak ediyordu - ama ne yazık ki başka bir komut dosyası tıklamayı işlemeye devam etmiş olmalı.
Derrick Dennis

22

HTML'nizde, düğmenize veri özelliği ekleyebilirsiniz:

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

Ardından url'yi değiştirmek için jQuery'yi kullanabilirsiniz:

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

Bu yardımcı olur umarım


2020: Veri hedefi ile ilgili bit nedeniyle Benim İçin En İyi Cevap .... Teşekkürler !!!
MarcoZen

21

Basit Javascript ile:

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


10

JavaScript'e gerek yok, sadece bir bağlantıya sarın

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

Ankur geçerli HTML5 istemedi, prototipi için bir çözüm istedi
Owen


7

Window.location'ı kullanabilirsiniz

window.location="/newpage.php";

Ya da sadece arama düğmesinin bulunduğu formu istediğiniz sayfanın eylemini yapabilirsiniz.


4

Bu basit JavaScript kodunu, örnek bir arama sonuçları sayfasına bağlantı vermek için arama düğmesi yapmak için kullanabilirsiniz. Burada ana sayfamın '/ arama' bölümüne yönlendirildim , Google arama motorundan arama yapmak istiyorsanız , form eyleminde " https://www.google.com/search " kullanabilirsiniz .

<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

YT 2012 kodundan.

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


2

bu, bunu yapmanın EN HIZLI (en okunabilir, en az karmaşık) yoludur, Owens işe yarıyor ancak yasal HTML değil, teknik olarak bu cevap jQuery değil (ancak jQuery önceden hazırlanmış bir sözde kod olduğundan - istemci platformunda yerel JavaScript olarak yeniden yorumlandı - gerçekten orada olduğunu jQuery diye bir şey) yine

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

0

Ve göze çarpmayan JavaScript (UJS) kullanan CoffeeScript ile Rails 3'te:

Ekle assets/javascripts/my_controller.js.coffee:

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

okunan: document.ready olayı tetiklendiğinde, onclickkimliği field_namejavascript'i çalıştıran bir DOM nesnesine bir olay ekleyinwindow.location.href='new_url';


0

Burada istemci tarafı yönlendirmeyle ilgili pek çok soru var ve bunların çoğunu söyleyemem… bu bir istisna.

Yeniden yönlendirmenin istemciden gelmemesi gerekiyor… sunucudan gelmesi gerekiyor. Sunucu üzerinde kontrolünüz yoksa, gitmek için başka bir URL seçmek için kesinlikle Javascript kullanabilirsiniz, ancak… bu yeniden yönlendirme değildir. Yeniden yönlendirme, sunucuda 300 durum koduyla veya META etiketini HTML'de çevirerek yapılır.


0

Bir bağlantı kullanın ve bir düğme gibi biçimlendirin:

<a href="#page2" class="ui-btn ui-shadow ui-corner-all">Click this button</a>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.