Як зробити переадресацію кнопки на іншу сторінку за допомогою jQuery або просто Javascript


101

Я виготовляю прототип і хочу, щоб кнопка пошуку посилалася на зразок сторінки результатів пошуку.

Як зробити переадресацію кнопки на іншу сторінку при натисканні на неї за допомогою jQuery або звичайного JS.


Я попросив js, оскільки не уявляв, що доступне просте рішення HTML. Спасибі це вирішило мою мету.
Анкур

Відповіді:


64

Без сценарію:

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

А ще краще, оскільки ви просто кудись їдете, подайте користувачеві стандартний інтерфейс для "просто кудись":

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

Хоча, контекст звучить як "Імітувати звичайний пошук, коли користувач подає форму", і в цьому випадку перший варіант - це шлях.


13
Хто б подумав про посилання? ха - ха
meouw

+1 для форми. Оскільки це буде правильна форма пошуку, з часом ви повинні зробити це так, як це можливо.
НезадоволенняГота

@suhail - втричі більше коду та залежність від JavaScript не добре.
Квентін

1
@ayjay - натискання кнопки для надсилання надсилає форму лише у тому випадку, якщо кнопка подання асоційована з цією формою. Внести в нього внесок - це традиційний і найкраще підтримуваний спосіб зробити це.
Квентін

1
@mimi - Ні, це не так. Проблеми з повторною подачею форми виникають лише тоді, коли ви робите запит, який не є "безпечним" (у такому випадку це повинна бути форма POST ... але питання було про просту навігацію, тому немає причин не думати, що це безпечно). Браузери лише попереджають людей про можливість, коли запит може бути не безпечним (тому в цьому випадку вони не будуть, оскільки це не так method="POST").
Квентін

201

це ти що маєш на увазі?

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

1
Відповідно до цього запитання та відповіді, яке слід ставити, слід нахилятися до нього, window.locationа не document.locationяк канонічно.
Джухар Сінгх

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

5
навіщо повертати помилкове?
Франсіско Корралес Моралес

2
Без цього return falseнатискання клавіші "Enter або Return" може просто перейти до поточної URL-адреси, а не переадресувати на нове посилання. Особливо корисно, якщо у вас є елемент керування введенням тексту, який ви хочете опублікувати на інший URL, коли натискаєте клавішу введення / повернення.
Віра перемагає

2
Це не дуже вдале пояснення. Повернене значення вказує, чи слід продовжувати обробку події. За замовчуванням подія буде продовжувати бурхливість і може викликати інші дії, такі як надсилання форми або перехід до посилання, або нічого. Однак ви дуже хочете тут «поглинути» подію. Повертаючи помилку, обробка подій закінчиться тут.
redreinard

1
дякую - помилка повернення врятувала мене - цікавилася, чому URL не змінився б - але, на жаль, якийсь інший сценарій повинен був продовжувати обробку натискання.
Деррік Денніс

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 рік: найкраща відповідь для мене через трохи інформації про цільову інформацію .... Дякую !!!
MarcoZen

21

За допомогою простого Javascript:

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


10

Не потрібно JavaScript, просто загорніть його у посилання

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

Анкур не запитував дійсний HTML5, він попросив рішення для свого прототипу
Оуен


7

Ви можете використовувати window.location

window.location="/newpage.php";

Або ви можете просто зробити форму, в якій знаходиться кнопка пошуку, мати потрібну сторінку.


4

Ви можете використовувати цей простий код JavaScript для створення кнопки пошуку для посилання на зразок сторінки результатів пошуку. Тут я переспрямований на "/ пошук" моєї домашньої сторінки. Якщо ви хочете шукати з пошукової системи Google, ви можете використовувати " https://www.google.com/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, ідентифікатор field_nameякого виконується javascriptwindow.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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.