Використовуйте звичайне посилання, щоб подати форму


130

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

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

Я спробував застосувати onClick = "document.formName.submit ()" до елемента, але я вважаю за краще метод html.

alt текст

Будь-які ідеї?


3
використовувати кнопку і css це для відображення зображення або використання javascript, немає реального способу зробити простий href для подання форми без javascript.
Антон С

я по-друге, що, на жаль, це не простий спосіб без JavaScript
benhowdle89

4
Ваша причина для цього звучить як помилкова економія. Краще просто придумати стандартний css для кнопки подання та використовувати форми так, як вони були розроблені для використання. Є купа методів CSS кнопки описують тут: tripwiremagazine.com/2009/06 / ...
dnagirl

Відповіді:


169

Два способи. Або створити кнопку та накреслити її так, щоб вона виглядала як посилання з css, або створити посилання та використовувати onclick="this.closest('form').submit();return false;".


55
Aaaaaaaand ось посилання на те, як стилізувати кнопку як посилання: stackoverflow.com/questions/1367409/…
фліпчарт

3
зауважте, що form.submit()без JavaScript не
вийде

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" це id не name: D
Mahdi Jazini

Це має бути найкраща і чітка відповідь, дякую!
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.
Ерік Каплун

Хоча ваш коментар є кращим способом, це не завжди можливо
Serj Sagan

Чому це кращий спосіб?
Марк

Це напіввстановлена ​​практика кодування, як правило, залишає після себе чистіший html ... але це не величезна справа
Serj Sagan

1
Ця відповідь не залежить від javascript, і це одна річ, яку потрібно турбувати
Matthew Lock

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
Sam

5

використання:

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

або:

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

плюс деякі CSS


0

Однозначно, немає рішення з чистим HTML, щоб подати форму із посиланням (a тегом ). Стандартний 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>

@Nathan, я не маю особливої ​​практики писати Stackoverflow. Я сподіваюся, що ваші виправлення допоможуть мені покращити стиль. Моя англійська теж не гарна.
Paulo Buchsbaum

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.