วิธีทำให้ปุ่มเปลี่ยนเส้นทางไปยังหน้าอื่นโดยใช้ jQuery หรือ Javascript


104

ฉันกำลังสร้างต้นแบบและต้องการให้ปุ่มค้นหาลิงก์ไปยังหน้าผลการค้นหาตัวอย่าง

ฉันจะเปลี่ยนเส้นทางปุ่มไปยังหน้าอื่นได้อย่างไรเมื่อคลิกโดยใช้ jQuery หรือ JS ธรรมดา


ฉันขอ js เพราะฉันไม่คิดว่าจะมีโซลูชัน HTML แบบธรรมดา ขอบคุณที่แก้ไขจุดประสงค์ของฉัน
Ankur

คำตอบ:


66

ไม่มีสคริปต์:

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

ยังดีกว่าเนื่องจากคุณกำลังจะไปที่ไหนสักแห่งให้นำเสนอผู้ใช้ด้วยอินเทอร์เฟซมาตรฐานสำหรับ "ไปที่ไหนสักแห่ง":

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

แม้ว่าบริบทจะดูเหมือน "จำลองการค้นหาปกติที่ผู้ใช้ส่งแบบฟอร์ม" ซึ่งในกรณีนี้ตัวเลือกแรกคือวิธีที่จะไป


14
ใครพอจะนึกลิงค์ haha
mew

+1 สำหรับแบบฟอร์ม เนื่องจากจะเป็นรูปแบบการค้นหาที่เหมาะสมในที่สุดคุณควรทำเช่นนั้นตอนนี้ถ้าเป็นไปได้
แพะไม่พอใจ

@suhail - โค้ดมากขึ้นสามเท่าและการพึ่งพา JavaScript ไม่ดี
Quentin

1
@ayjay - การคลิกปุ่มส่งจะเป็นการส่งแบบฟอร์มหากปุ่มส่งเชื่อมโยงกับแบบฟอร์มนั้นเท่านั้น การใส่อินพุตเป็นวิธีดั้งเดิมและได้รับการสนับสนุนที่ดีที่สุด
Quentin

1
@mimi - ไม่ค่ะ ปัญหาในการส่งแบบฟอร์มอีกครั้งจะเกิดขึ้นเฉพาะเมื่อคุณกำลังส่งคำขอที่ไม่ "ปลอดภัย" (ซึ่งในกรณีนี้ควรเป็นแบบฟอร์ม POST ... แต่มีคำถามเกี่ยวกับการนำทางที่เรียบง่ายดังนั้นจึงไม่มีเหตุผลที่จะไม่คิดว่าปลอดภัย) เบราว์เซอร์จะเตือนผู้อื่นเกี่ยวกับความเป็นไปได้เมื่อคำขออาจไม่ปลอดภัยเท่านั้น (ดังนั้นพวกเขาจะไม่ทำในกรณีนี้เนื่องจากไม่ใช่method="POST")
Quentin

204

นี่คือสิ่งที่คุณหมายถึง?

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

1
ตามคำถามและคำตอบstackoverflow นี้เราควรเอนเอียงไปทางอื่นwindow.locationและไม่ใช่document.locationเพราะไม่ใช่วิธีที่ยอมรับได้
Jujhar Singh

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

5
ทำไมต้องกลับเท็จ?
Francisco Corrales Morales

2
หากไม่มีการreturn falseกดปุ่ม "Enter หรือ Return คีย์" อาจนำคุณไปยัง url ปัจจุบันแทนที่จะเปลี่ยนเส้นทางไปยังลิงก์ใหม่ มีประโยชน์อย่างยิ่งเมื่อคุณมีตัวควบคุมการป้อนข้อความซึ่งคุณต้องการโพสต์ไปยัง URL อื่นเมื่อคุณกดปุ่ม Enter / return
ศรัทธาชนะ

2
นั่นไม่ใช่คำอธิบายที่ดีมาก ค่าที่ส่งคืนบ่งชี้ว่าจะดำเนินการต่อเหตุการณ์หรือไม่ ตามค่าเริ่มต้นเหตุการณ์จะยังคงปรากฏขึ้นและอาจทำให้เกิดการดำเนินการอื่น ๆ เช่นการส่งแบบฟอร์มหรือไปที่ลิงก์หรือไม่ทำอะไรเลย อย่างไรก็ตามคุณต้องการ "ซึมซับ" เหตุการณ์ที่นี่จริงๆ เมื่อส่งคืนเท็จการประมวลผลเหตุการณ์จะสิ้นสุดที่นี่
redreinard

1
ขอบคุณ - การส่งคืนเท็จช่วยฉัน - สงสัยว่าทำไม url woud ถึงไม่เปลี่ยน - แต่อนิจจาสคริปต์อื่นต้องประมวลผลการคลิกต่อไป
Derrick Dennis

22

ใน html ของคุณคุณสามารถเพิ่มแอตทริบิวต์ข้อมูลลงในปุ่มของคุณ:

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

จากนั้นคุณสามารถใช้ jQuery เพื่อเปลี่ยน url:

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

หวังว่านี่จะช่วยได้


2020: คำตอบที่ดีที่สุดสำหรับฉันเนื่องจากบิตเกี่ยวกับ data-target .... ขอบคุณ !!!
MarcoZen



10

ไม่จำเป็นต้องใช้จาวาสคริปต์เพียงแค่ห่อไว้ในลิงค์

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

Ankur ไม่ได้ขอ HTML5 ที่ถูกต้องเขาขอวิธีแก้ปัญหาสำหรับต้นแบบของเขา
Owen


7

คุณสามารถใช้ window.location

window.location="/newpage.php";

หรือคุณสามารถทำให้แบบฟอร์มที่ปุ่มค้นหามีการทำงานของหน้าที่คุณต้องการ


4

คุณสามารถใช้โค้ด JavaScript ง่ายๆนี้เพื่อสร้างปุ่มค้นหาเพื่อเชื่อมโยงไปยังหน้าผลการค้นหาตัวอย่าง ที่นี่ฉันได้เปลี่ยนเส้นทางไปที่"/ ค้นหา"ของหน้าแรกของฉันหากคุณต้องการค้นหาจากเครื่องมือค้นหาของ Google คุณสามารถใช้" https://www.google.co.th/search "ในการดำเนินการแบบฟอร์ม

<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

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


2

นี่เป็นวิธีที่เร็วที่สุด (อ่านง่ายและซับซ้อนน้อยที่สุด) ในการทำ Owens ใช้งานได้แต่ไม่ใช่ HTML ที่ถูกกฎหมายในทางเทคนิคคำตอบนี้ไม่ใช่ jQuery (แต่เนื่องจาก jQuery เป็นรหัสเทียมที่เตรียมไว้ล่วงหน้า - ตีความใหม่บนแพลตฟอร์มไคลเอนต์เป็น JavaScript ดั้งเดิม - มีจริงๆคือไม่มีสิ่งเช่น jQuery อยู่แล้ว)

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

0

และใน Rails 3 พร้อม CoffeeScript โดยใช้ JavaScript (UJS) ที่ไม่สร้างความรำคาญ:

เพิ่มในassets/javascripts/my_controller.js.coffee:

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

ซึ่งอ่านว่า: เมื่อเหตุการณ์ document.ready เริ่มทำงานให้เพิ่มonclickเหตุการณ์ลงในวัตถุ DOM ที่มี ID field_nameซึ่งเรียกใช้งานจาวาสคริปต์window.location.href='new_url';


0

มีคำถามมากมายเกี่ยวกับการเปลี่ยนเส้นทางฝั่งไคลเอ็นต์ที่นี่และฉันไม่สามารถพูดออกมาได้ส่วนใหญ่ ... อันนี้เป็นข้อยกเว้น

การเปลี่ยนเส้นทางไม่ควรมาจากไคลเอนต์ ... มันควรจะมาจากเซิร์ฟเวอร์ หากคุณไม่สามารถควบคุมเซิร์ฟเวอร์ได้คุณสามารถใช้ Javascript เพื่อเลือก URL อื่นที่จะไปได้ แต่…นั่นไม่ใช่การเปลี่ยนเส้นทาง การเปลี่ยนเส้นทางทำได้ด้วยรหัสสถานะ 300 รหัสที่เซิร์ฟเวอร์หรือโดยการใช้แท็ก META ใน HTML


0

ใช้ลิงค์และจัดรูปแบบให้เหมือนปุ่ม:

<a href="#page2" class="ui-btn ui-shadow ui-corner-all">Click this button</a>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.