LINUX.ORG.RU

Кнопка типа <button> - не хочет переходить по ссылке

 , ,


0

1

Имею страницу с URL:

http://site.loc/personalArea/userHoldObjects/objectCard/show/18

В ее HTML-коде есть кнопка:

<form method="POST" action="#" ... >

<button 
 id="connectRoomToEnraceToBuildingButton" 
 name="connectRoomToEnraceToBuildingButton" 
 class="btn bth-default" 
 onclick="window.location='http://site.loc/personalArea/userHoldObjects/connectRoomToEnraceToBuilding/18'">
 
 <span class="glyphicon glyphicon-th"></span> Подключить

</button>

Когда я ее нажимаю, следует переход на URL:

http://site.loc/personalArea/userHoldObjects/objectCard/show/18#

Вместо того чтобы перейти на URL:

http://site.loc/personalArea/userHoldObjects/connectRoomToEnraceToBuilding/18

Почему так происходит? Кнопка не имеет тип submit, это просто кнопка. Я даже проверил в консоли выполнение кода:
window.location='http://site.loc/personalArea/userHoldObjects/connectRoomToEnraceToBuilding/18'

Этот код выполняется, происходит правильный переход. Почему же на кнопке данный код не работает? Никакого JavaScript я на кнопку не биндил, так что даже не знаю что еще проверить.

★★★★★

Может начнёшь с описания того зачем тебе это надо? Делать переход на страницу через window.location уже странновато, но использовать для этого <button> совсем уж странно.

P.S. как-то так. Можно и внутрь <form> засунуть, если надо

<a href="http://site.loc/personalArea/userHoldObjects/connectRoomToEnraceToBuilding/18" class="btn btn-primary"><span class="glyphicon glyphicon-th"></span> Подключить</a>
MrClon ★★★★★ ()

так что даже не знаю что еще проверить.

Документацию проверь, пятизвёздочный, блджад.

type
The type of the button. Possible values are:
submit: The button submits the form data to the server. This is the default if the attribute is not specified, or if the attribute is dynamically changed to an empty or invalid value.

anonymous ()
Ответ на: комментарий от MrClon

Может начнёшь с описания того зачем тебе это надо? Делать переход на страницу через window.location уже странновато, но использовать для этого <button> совсем уж странно.

А мне странно использовать для визуального объекта «кнопка, которая лежит на форме», понятие «ссылка», которая декорируется так, чтоб выглядеть как кнопка. Мне проще кнопку называть кнопкой.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

HTML это про семантику, а не про внешний вид. За внешний вид отвечает CSS. То что ты хочешь получить это нечто что в смысловом отношении является ссылкой, а значит это <a>. Выглядеть оно может как угодно, для HTML это не важно

MrClon ★★★★★ ()
Ответ на: комментарий от Xintrea

То что ты пытаешься сделать это и есть ссылка. Хотя бы и на форме. То что она выглядит как кнопка — не имеет никакого значения. Ты используешь JS-костыль чтобы заставить кнопку работать как ссылку. Вариант предложенный @goingUp и мной будет работать даже без JS и CSS, в любой lynx, с любым экзотическим софтом

MrClon ★★★★★ ()

За ссылки кнопками в приличном обществе бьют канделяброй. К примеру, ты только что сломал миддл-клик по этой ссылке.

anonymous ()
Ответ на: комментарий от MrClon

То что она выглядит как кнопка — не имеет никакого значения.

Для меня имеет. Если я вижу кнопку, то и в коде я хочу быстро увидеть кнопку, а не выискивать ссылку, разрисованную под кнопку.

Представь, что HTML вдруг допилили, и у button появился атрибут href. Что ты будешь использовать для кнопки? Тег <a> или тег <button>?


даже без JS и CSS, в любой lynx, с любым экзотическим софтом

Моя целевая аудитория это не оценит.

Xintrea ★★★★★ ()
Ответ на: комментарий от anonymous

К примеру, ты только что сломал миддл-клик по этой ссылке.

Когда работаешь с формами и кнопками, миддл-клик по кнопке просто вреден. Нам нужно последовательно проводить пользователя по сложному интерфейсу из нескольких страниц, а ты хочешь ему дать возможность сделать ответвление на любом шаге, чтобы он запутался окончательно.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Для меня имеет

Не думал о том чтобы реализовать своё что-там-у-тебя средствами других технологий? Веб и без твоей помощи достаточно ужасен.

Говорят в мобильной разработке денег поболее будет, задумайся

MrClon ★★★★★ ()
Ответ на: комментарий от Xintrea

Представь, что HTML вдруг допилили, и у button появился атрибут href.

А зачем батону атрибут href?

Что ты будешь использовать для кнопки? Тег <a> или тег <button>?

Для кнопки буду использовать <button>, для ссылки — <a>.

Grzegorz ()
Ответ на: комментарий от MrClon

Не думал о том чтобы реализовать своё что-там-у-тебя средствами других технологий?

Узнаю Лор, классика.


Веб и без твоей помощи достаточно ужасен.

Я вебу никак не помогаю, повлиять на него я не могу.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Представь, что HTML вдруг допилили, и у button появился атрибут href. Что ты будешь использовать для кнопки? Тег <a> или тег <button>?

Не появится. В XHTML2 хотели добавить всем элементам и где он теперь?

Не делай херню, послушай что тебе говорят.

anonymous ()
Ответ на: комментарий от Xintrea

Я поражаюсь вашему упорству. Вам открыто сказали несколько людей, что то, что вы делаете - неверно. Нет, я художник, я так вижу. Кроме того, не очень компетентный художник, судя по всему.

Надеюсь, никогда не столкнусь с вашим творчеством.

anonymous ()
Ответ на: комментарий от anonymous

Я поражаюсь вашему упорству. Вам открыто сказали несколько людей, что то, что вы делаете - неверно. Нет, я художник, я так вижу. Кроме того, не очень компетентный художник, судя по всему. Надеюсь, никогда не столкнусь с вашим творчеством.

Я поражаюсь вашей лени написать развернутый ответ по теме, при этом вы совершенно не ленитесь писать что топикстартер все делает неправильно, вы уже начали обсуждать компетентность топикстартера, и выносите суждения о творчестве, которого не видели.

Жду не дождусь, когда уже на лоре автор темы сможет банить таких лентяев и пустоголовых критиков как вы.

Один только MrClon попытался что-то сформулировать в двух предложениях. Но тема семантики обширна и спорна, чтобы вместиться в 250 символов.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Правильное решение тебе уже дважды предложили, до кучи предлажили костыль, и дали объяснение почему исходный код не работает. Теперь остаётся только обсуждать твою упоротость, остальные возможности этой темы исчерпаны

MrClon ★★★★★ ()
Ответ на: комментарий от Xintrea

Жду не дождусь, когда уже на лоре автор темы сможет банить таких лентяев и пустоголовых критиков как вы.

Свали на стековерфлоу. Хотя про дворника анон тоже неплохо предложил

MrClon ★★★★★ ()
Ответ на: комментарий от Xintrea

Моя целевая аудитория это не оценит.

Уверен? Готов отсечь пользователей, отключающих JS или просто пользователей старых браузеров?

Когда в на pass.rzd.ru ломают поиск поездов в не самых последних версиях Firefox, я просто плююсь, но от тебя, честно говоря, такого не ожидал.

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Уверен? Готов отсечь пользователей, отключающих JS или просто пользователей старых браузеров?

Да, готов отсечь пользователей, отключающих JS (на что они надеются при использовании веб-приложения?). И готов отсечь любителей links/lynx (веб-приложение на такие браузеры не расчитыватеся).


Когда в на pass.rzd.ru ломают поиск поездов в не самых последних версиях Firefox, я просто плююсь, но от тебя, честно говоря, такого не ожидал.

Узпакойся, мои веб-приложения работают и в древних браузерах.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

на что они надеются при использовании веб-приложения?

Что у тебя за приложение? Карта? Диаграммы? 3д?

Они надеются, что ты не мудак и не будешь ради одной формы тащить жабоскрипт.

anonymous ()
Ответ на: комментарий от Xintrea

Но тема семантики обширна и спорна

Да пофиг на семантику, ты напердолил неработающего жабоскрипта вместо того чтобы тупо воспользоваться готовым тегом. Как уже подметили, мог бы хотя бы action формы нормально указать для приличия.

Grzegorz ()
Ответ на: комментарий от Legioner

class="btn btn-primary". У ТСа bootstrap же.

Вообще обычно у людей у которых возникает желание создать кнопку которая реализует поведение ссылки, за одно возникает желание отредизайнить стандартные виджеты чтобы они выглядели одинаково во всех браузерах

P.S. компромисный вариант, вроде должен работать:

<a href="/some"><button type="button">Жмакай</button></a>
MrClon ★★★★★ ()
Ответ на: комментарий от Grzegorz

С каких пор window.location не работает в яваскрипте?

Как уже подметили, мог бы хотя бы action формы нормально указать для приличия.

Все приличные интерфейсы уже давно не имеют кнопки submit, а значения запоминаются по ходу их изменения, через AJAX. Кнопки форм ведут на разные страницы, поэтому единственным action не обойдешься. В таком окружении формы нужны только для того, чтобы правильно срабатывали CSS-стили.

По сути, формы нынче применимы лишь в одном узком сегменте: если есть форма ввода данных и есть кнопка отправки данных. Вот тогда нужно и action прописать и submit сделать. Я вижу, вам это сложно понять, но тем не менее это так.

Мне, кстати, не нравятся интерфейсы без кнопок OK и Cancel, но современные UI дезигнеры сделали интерфейсы «без подтверждения» стандартом де факто. Посмотрите на тот же Гном, в нем уже сколько лет только кнопка «Отмена» на окнах ввода, кнопок вида «Ок» или там «Применить» нету в принципе. То же самое и в вебе происходит.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Я поражаюсь вашей лени написать развернутый ответ по теме, при этом вы совершенно не ленитесь писать что топикстартер все делает неправильно, вы уже начали обсуждать компетентность топикстартера, и выносите суждения о творчестве, которого не видели.

А чему тут поражаться если ты действительно все делаешь не так? Если вещь делает при клике переход по ссылке - это ссылка. То что она выглядит как кнопка вопрос десятый.

вы уже начали обсуждать компетентность топикстартера

Компетентность нулевая

abs ★★ ()