Cách tạo một nút chuyển hướng đến một trang khác bằng jQuery hoặc chỉ Javascript


101

Tôi đang tạo mẫu thử nghiệm và tôi muốn nút tìm kiếm liên kết đến trang kết quả tìm kiếm mẫu.

Làm cách nào để tạo một nút chuyển hướng đến một trang khác khi nó được nhấp bằng jQuery hoặc JS thuần túy.


Tôi đã yêu cầu js vì tôi không tưởng tượng rằng một giải pháp HTML đơn giản lại có sẵn. Cảm ơn nó đã giải quyết được mục đích của tôi.
Ankur

Câu trả lời:


64

Không có tập lệnh:

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

Tốt hơn nữa, vì bạn chỉ đang đi đâu đó, hãy giới thiệu cho người dùng giao diện chuẩn cho "chỉ đi đâu đó":

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

Mặc dù, ngữ cảnh có vẻ giống như "Mô phỏng tìm kiếm thông thường trong đó người dùng gửi biểu mẫu", trong trường hợp này, tùy chọn đầu tiên là cách để thực hiện.


13
Ai có thể nghĩ ra một liên kết? haha
meouw 10/02/10

+1 cho biểu mẫu. Vì nó sẽ là một hình thức tìm kiếm thích hợp cuối cùng bạn nên làm như vậy ngay bây giờ nếu có thể.
DisgruntledGoat

@suhail - Nhiều mã gấp ba lần và phụ thuộc vào JavaScript là không tốt.
Quentin

1
@ayjay - Nhấp vào nút gửi chỉ gửi biểu mẫu nếu nút gửi được liên kết với biểu mẫu đó. Đưa đầu vào là cách truyền thống và được hỗ trợ tốt nhất để làm điều đó.
Quentin

1
@mimi - Không, không. Sự cố gửi lại biểu mẫu chỉ xảy ra khi bạn đang đưa ra một yêu cầu không "an toàn" (trong trường hợp đó nó phải là biểu mẫu ĐĂNG ... nhưng câu hỏi đang hỏi về điều hướng đơn giản, vì vậy không có lý do gì để không nghĩ rằng nó an toàn). Các trình duyệt chỉ cảnh báo mọi người về khả năng xảy ra khi yêu cầu có thể không an toàn (vì vậy họ sẽ không thực hiện trong trường hợp này vì không phải vậy method="POST").
Quentin

201

Ý bạn là vậy đúng không?

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

1
Theo câu hỏi và câu trả lời của stackoverflow này , người ta nên nghiêng về phía window.locationvà không phải document.locationvì nó không phải là cách chuẩn.
Jujhar Singh

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

5
tại sao lại trả về false?
Francisco Corrales Morales

2
Nếu không có return false, việc nhấn phím "Enter hoặc Return" có thể chỉ đưa bạn đến url hiện tại thay vì chuyển hướng đến liên kết mới. Đặc biệt hữu ích, khi bạn có một điều khiển nhập văn bản mà bạn muốn đăng lên một url khác khi bạn nhấn phím enter / return.
Faith thắng

2
Đó không phải là một lời giải thích rất tốt. Giá trị trả về cho biết có tiếp tục xử lý sự kiện hay không. Theo mặc định, sự kiện sẽ tiếp tục nổi lên và có thể kích hoạt các hành động khác, chẳng hạn như gửi biểu mẫu, truy cập liên kết hoặc không có gì. Tuy nhiên, bạn rất muốn “tiếp thu” sự kiện tại đây. Bằng cách trả về false, quá trình xử lý sự kiện sẽ kết thúc ở đây.
redreinard

1
cảm ơn - return false đã cứu tôi - đã tự hỏi tại sao url woudl không thay đổi - nhưng than ôi một số tập lệnh khác hẳn đã tiếp tục xử lý nhấp chuột.
Derrick Dennis

22

Trong html của bạn, bạn có thể thêm thuộc tính dữ liệu vào nút của mình:

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

Sau đó, bạn có thể sử dụng jQuery để thay đổi url:

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

Hi vọng điêu nay co ich


Năm 2020: Câu trả lời hay nhất cho tôi do một chút về mục tiêu dữ liệu .... Cảm ơn !!!
MarcoZen

21

Với Javascript đơn giản:

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


10

Không cần javascript, chỉ cần gói nó trong một liên kết

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

Ankur đã không yêu cầu HTML5 hợp lệ, anh ấy đã yêu cầu giải pháp cho nguyên mẫu của mình
Owen

9

Điều này sẽ hoạt động ..

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

7

Bạn có thể sử dụng window.location

window.location="/newpage.php";

Hoặc bạn có thể chỉ cần làm cho biểu mẫu mà nút tìm kiếm đang ở có một hành động của trang bạn muốn.


4

Bạn có thể sử dụng mã JavaScript đơn giản này để tạo nút tìm kiếm liên kết đến trang kết quả tìm kiếm mẫu. Ở đây tôi đã chuyển hướng đến '/ search' trên trang chủ của mình, Nếu bạn muốn tìm kiếm từ công cụ tìm kiếm của Google, Bạn có thể sử dụng " https://www.google.com/search " trong hành động biểu mẫu.

<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

Từ mã YT 2012.

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


2

đây là cách NHANH NHẤT (dễ đọc nhất, ít phức tạp nhất) để thực hiện, Owens hoạt động nhưng nó không phải là HTML hợp pháp, về mặt kỹ thuật thì câu trả lời này không phải là jQuery (nhưng vì jQuery là một mã giả được chuẩn bị trước - được diễn giải lại trên nền tảng khách hàng dưới dạng JavaScript gốc - có thực sự có những điều như jQuery anyway)

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

0

Và trong Rails 3 với CoffeeScript sử dụng JavaScript (UJS) không phô trương:

Thêm vào assets/javascripts/my_controller.js.coffee:

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

trong đó đọc: khi sự kiện document.ready được kích hoạt, hãy thêm onclicksự kiện vào đối tượng DOM có ID field_namethực thi javascriptwindow.location.href='new_url';


0

Có rất nhiều câu hỏi ở đây về chuyển hướng phía khách hàng và tôi không thể trả lời hầu hết chúng… câu hỏi này là một ngoại lệ.

Việc chuyển hướng không được cho là đến từ máy khách… nó phải đến từ máy chủ. Nếu bạn không có quyền kiểm soát máy chủ, bạn chắc chắn có thể sử dụng Javascript để chọn một URL khác để truy cập, nhưng… đó không phải là chuyển hướng. Việc chuyển hướng được thực hiện với 300 mã trạng thái tại máy chủ hoặc bằng cách ghép thẻ META trong HTML.


0

Sử dụng một liên kết và tạo kiểu cho nó giống như một nút:

<a href="#page2" class="ui-btn ui-shadow ui-corner-all">Click this button</a>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.