Скажи, что у меня есть:
<form method="get" action="something.php">
<input type="text" name="name" />
</form>
<input type="submit" />
Как я могу отправить эту форму с помощью этой кнопки отправки за пределами формы, я думаю, что в HTML5 есть атрибут действия для отправки, но я не уверен, что это полностью кросс-браузер, и если это не так, в любом случае, чтобы сделай это?
Ответы:
Обновление: в современных браузерах вы можете использовать
form
атрибут для этого .Насколько я знаю, вы не можете сделать это без JavaScript.
Вот что говорит спецификация
Это мой жирный
submit
Кнопка считается контроль.http://www.w3.org/TR/html4/interact/forms.html#h-17.2.1
Из комментариев
Почему бы не разместить
input
внутри формы, но использовать CSS, чтобы разместить его в другом месте на странице?источник
В HTML5 есть атрибут формы . В принципе
источник
<button type="submit" form="frmFoo" onclick="!this.form&&$('#'+$(this).attr('form')).submit()">
как показали эксперименты, this.form является присоединенной формой DomElement, в то время как в противном случае он равен нулю. // edit: jQuery, но возможно и с ванилью, тоже ofcredrian<button type="submit" form="frmFoo" onclick="!this.form && document.getElementById('myform').submit()">
Решение, которое отлично работает для меня, все еще отсутствует здесь. Это требует наличия визуально скрытого
<submit>
или<input type="submit">
элемента внутри<form>
и связанного с ним<label>
элемента вне его. Это будет выглядеть так:Теперь эта ссылка позволяет вам «щелкнуть»
<submit>
элемент формы , щелкнув<label>
элемент.источник
label
не является фокусируемым элементом (AFAIK), поэтому он не интуитивно понятен для пользователя, который использует только клавиатуру для перехода к «кнопке», а затем нажимает пробел, чтобы активировать эту кнопку, например. (Я понимаю, что<enter>
вместо этого вы можете нажать , но это не единственный способ, которым люди привыкли перемещаться по формам с помощью клавиатуры)label
кнопку через вкладку, вы можете использоватьtabindex
атрибут HTML:<label for="submit-form" tabindex="0">Submit</label>
согласно этому вопросуесли вы можете использовать JQuery, вы можете использовать это
Итак, суть заключается в том, чтобы создать кнопку типа «Отправить» и поместить в форму кнопку реальной отправки (конечно, скрывая ее), а также отправить форму с помощью jquery, нажав кнопку «Поддельная отправка». Надеюсь, поможет.
источник
$('button[form]').click(function (){ var formId = $(this).attr('form'); $('#' + formId).submit(); });
Это сработало для меня, чтобы иметь кнопку удаленной отправки формы.
источник
Аналогично другому решению здесь, с незначительными изменениями:
https://www.w3schools.com/tags/att_form.asp
источник
Попробуй это:
Хотя я бы предложил добавить
id
к форме и получить доступ к ней вместоdocument.forms[index]
.источник
Вы всегда можете использовать jQuery:
источник
Вот довольно солидное решение, которое включает в себя лучшие идеи, а также мое решение проблемы, выделенной Оффереином. Никакой JavaScript не используется.
Если вам нужна обратная совместимость с IE (и даже с Edge 13), вы не можете использовать этот
form="your-form"
атрибут .Используйте стандартный ввод для отправки без отображения и добавьте метку для него вне формы:
Обратите внимание на использование
display: none;
. Это намеренно. Использование.hidden
класса начальной загрузки конфликтует с jQuery.show()
и.hide()
, и с тех пор устарело в Bootstrap 4.Теперь просто добавьте метку для вашего запроса (в стиле начальной загрузки):
В отличие от других решений, я также использую tabindex - установлен в 0 - это означает, что мы теперь совместимы с вкладками клавиатуры. Добавление
role="button"
атрибута дает ему стиль CSScursor: pointer
. И вуаля. ( См. Эту скрипку ).источник
Enter
имеет никакого эффекта. Таким образом, возможность вкладывать в него кажется немного бессмысленным. Есть ли способ сделать это без использования JavaScript?<input... />
синтаксиса самозакрытия, который почти все явно и некорректно используют здесь (тоже), для правильного тега void no-close! :) Слава!Это отлично работает! ;)
Это можно сделать с помощью Ajax и с помощью того, что я называю «элементом зеркала формы». Вместо того, чтобы отправить форму с внешним элементом, вы можете создать поддельную форму. Предыдущая форма не нужна.
Код ajax будет выглядеть так:
Это очень полезно, если вы хотите отправить некоторые данные в другую форму без отправки родительской формы.
Этот код, вероятно, может быть адаптирован / оптимизирован в соответствии с необходимостью. Работает отлично !! ;) Также работает, если вы хотите выбрать опцию вот так:
Я надеюсь, что это помогло кому-то, как это помогло мне. ;)
источник
Может быть, это может сработать, но я не знаю, является ли это действительным HTML.
источник
У меня была проблема, когда я пытался скрыть форму от элемента ячейки таблицы, но все равно показывал кнопку отправки формы. Проблема заключалась в том, что элемент формы все еще занимал дополнительное пустое пространство, что делало формат моей ячейки таблицы странным. Отображение: нет и видимость: скрытые атрибуты не работали, потому что она также скрывала кнопку отправки, поскольку она содержалась внутри формы, которую я пытался скрыть. Простой ответ состоял в том, чтобы установить высоту форм практически без использования CSS
Так,
CSS -
работал на меня.
источник
Я использовал этот способ, и он мне понравился, он проверяет форму перед отправкой и совместим с safari / google. нет JQuery NN
источник