Используйте обычную ссылку для отправки формы


130

Я хочу отправить форму. Но я не буду основным способом использования кнопки ввода с представить тип , но есть на ссылку.

На изображении ниже показано, почему. Я использую ссылки на изображения для сохранения / отправки формы. Поскольку у меня есть стандартная разметка css для ссылок на изображения, я не хочу использовать кнопки отправки ввода.

Я попытался применить onClick = "document.formName.submit ()" к элементу a, но я бы предпочел метод html.

альтернативный текст

Любые идеи?


3
используйте кнопку и css для отображения изображения или используйте javascript, нет реального способа сделать простой href для отправки формы без javascript.
Anton S

Во-вторых, к сожалению, это непростой способ без javascript
benhowdle89,

4
Ваша причина для этого звучит как ложная экономия. Лучше просто придумать стандартный CSS для кнопок отправки и использовать формы так, как они были разработаны для использования. Есть куча методов CSS кнопки описывают здесь: tripwiremagazine.com/2009/06/...
dnagirl

Ответы:


169

Два пути. Либо создайте кнопку и стилизуйте ее так, чтобы она выглядела как ссылка с CSS, либо создайте ссылку и используйте onclick="this.closest('form').submit();return false;".


55
Аааааааи вот справочник о том, как стилизовать кнопку как ссылку: stackoverflow.com/questions/1367409/…
флипчарт

3
обратите внимание, что form.submit()не будет работать без JavaScript
baptx

3
@baptx даже старые смартфоны поддерживают JavaScript
Махди Джазини

2
@MahdiJazini многие люди по умолчанию отключают JavaScript, что может быть навязчивым и в некоторых случаях влиять на производительность. Если JavaScript не работает, он может сломать весь веб-сайт (например, при использовании CDN без локального отката и блокируется сторонний домен). Если есть ошибка HTML, вы все равно можете использовать сайт. Вместо этого разработчики должны следовать принципу прогрессивного улучшения.
baptx

3
Если вы хотите поддерживать пользователей без javascript, выполните первый вариант, описанный в этом ответе, стилизуя кнопку как ссылку. Например input[type=submit].link { border: none; background: none; display: inline; color: blue; text-decoration: underline; }и<input type=submit class="link" />
Ян Сверре

87

Насколько мне известно, вы не сможете сделать это без какой-либо формы сценариев.

<form id="my_form">
<!-- Your Form -->    
<a href="javascript:{}" onclick="document.getElementById('my_form').submit(); return false;">submit</a>
</form>

Пример отсюда .


1
и дорогие посетители ... не забудьте установить >>> id = "my_form" это идентификатор, а не имя: D
Махди Джазини

Это должен быть лучший и точный ответ, спасибо!
yehanny

28

Просто стиль, input type="submit"подобный этому, сработал для меня:

.link-button { 
     background: none;
     border: none;
     color: #0066ff;
     text-decoration: underline;
     cursor: pointer; 
}
<input type="submit" class="link-button" />

Протестировано в Chrome, IE 7-9, Firefox


просто для записи: вы должны выбрать соответствующий inputэлемент с помощью селекторов CSS, не прикрепляя класс к элементу HTML.
Erik Kaplun

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

Почему это предпочтительный способ?
Марк

Это частично устоявшаяся практика кодирования, обычно оставляющая после себя более чистый html ... но это не так уж и важно,
Серж Саган

1
Этот ответ также не зависит от javascript, о чем беспокоиться меньше,
Мэтью Лок,

10

Вы используете изображения для отправки ... так что вы можете просто использовать type="image""кнопку" ввода:

<input type="image" src="yourimage.png" name="yourinputname" value="yourinputvalue" />

1
... или <button>элемент с <img/>элементом в нем.
DanMan

Вот ссылка на MDN на тот случай, если кому-то еще понадобится источник: developer.mozilla.org/en-US/docs/Web/HTML/Element/input/image
Сэм,

5

использовать:

<input type="image" src=".."/>

или:

<button type="send"><img src=".."/> + any html code</button>

плюс немного CSS


0

Определенно, на чистом HTML нет решения для отправки формы с aтегом link ( ). Стандартный HTML принимает только кнопки или изображения. Как говорили некоторые другие соавторы, можно смоделировать появление ссылки с помощью кнопки, но я думаю, что цель вопроса не в этом.

ИМХО, я считаю, что предложенное и принятое решение не работает.

Я протестировал его на форме, и браузер не нашел ссылку на форму.

Таким образом, можно решить эту проблему, используя одну строку JavaScript, используя thisобъект, который ссылается на элемент, на который щелкают, который является дочерним узлом формы, которую необходимо отправить. Как this.parentNodeи узел формы. После того, как он просто вызывает submit()метод в этой форме. Чтобы найти правильную форму, не нужно исследовать весь документ.

<form action="http://www.greatsolutions.com.br/indexint.htm"                   
   method="get">
    <h3> Enter your name</h3>
    First Name <input type="text"  name="fname"  size="30"><br>
    Last Name <input type="text" name="lname" size="30"><br>
    <a href="#" onclick="this.parentNode.submit();"> Submit here</a>
</form>

Предположим, я вхожу под своим именем:

Заполненная форма

Я использовал getатрибут метода формы, потому что можно увидеть правильные параметры в URL-адресе на загруженной странице после отправки.

http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum

Это решение, очевидно, применимо к любому тегу, который принимает onclickсобытие или какое-либо подобное событие.

this- отличный выбор для восстановления контекста вместе с eventпеременной (доступной во всех основных браузерах и более поздних версиях IE9), которую можно использовать напрямую или передавать в качестве аргумента функции.

В этом случае замените строку с aтегом на строку ниже, используя свойство target, которое указывает элемент, который запустил событие.

<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>

@ Натан, у меня нет особой практики писать Stackoverflow. Я надеюсь, что ваши исправления помогут мне улучшить свой стиль. Мой английский тоже не очень хорош.
Пауло

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.