Я хочу, чтобы моя кнопка отправки была расположена где-нибудь это вне моего элемента формы? У меня есть какие-либо опции? За исключением jQuery.
Спасибо, rodchar
Это обычная ситуация. Думаю, это подойдет (не тестировал):
<form id="form1" action="someAction.cgi" method="GET">
<!-- other fields go here -->
</form>
<form id="form2" action="someOtherAction.cgi" method="GET">
<!-- other fields go here -->
</form>
<form>
<input value="Form One" type="button"
onclick="document.getElementById('form1').submit();"/>
<input value="Form Two" type="button"
onclick="document.getElementById('form2').submit();"/>
</form>
Я не уверен, нужна ли вам последняя
. Я помню, как браузеры игнорировали события, если кнопка не была в форме
.
Да, структурно кнопка отправки должна находиться внутри элемента формы, чтобы документ был валидным X/HTML. Но визуально вы можете расположить кнопку отправки в любом месте с помощью соответствующих CSS (float, абсолютное/относительное позиционирование и т.д.). Вы также можете написать JavaScript, который будет вызывать отправку формы и привязывать ее к другому элементу.
Это другой тип ответа, более четкий ответ от egrunin answer
<form id="form1" name="form1" action="someAction.cgi" method="GET">
<!-- other fields go here -->
</form>
<form id="form2" name="form2" action="someOtherAction.cgi" method="GET">
<!-- other fields go here -->
</form>
Calling by form id:
<form>
<input value="Form One" type="button"
onclick="document.getElementById('form1').submit();"/>
<input value="Form Two" type="button"
onclick="document.getElementById('form2').submit();"/>
</form>
or Calling by form name:
<form>
<input value="Form One" type="button"
onclick="document.form1.submit();"/>
<input value="Form Two" type="button"
onclick="document.form2.submit();"/>
</form>
Другой подход к этому - просто установить атрибут form
на кнопку:
<form id="first">
<input type="submit" form="second" value="Submit Second" />
</form>
<form id="second">
<input type="submit" form="first" value="Submit First" />
</form>
Fiddle: http://jsfiddle.net/52wgc2ym/
Оригинальный ответ
Естественное поведение кнопки submit заключается в том, чтобы отправить ближайшую форму вверх по иерархии. Единственный другой способ заставить кнопку отправить форму, в которой она не находится, - это использовать JavaScript (чем, по сути, и является jQuery).
При необходимости вы можете переместить кнопку отправки так, чтобы она отображалась так, как будто она не находится в форме визуально при отображении страницы. Это можно сделать с помощью CSS, что может дать желаемый результат (результаты).
Да, кнопка отправки должна находиться внутри формы.
Во всяком случае, мне кажется странным хотеть этого по-другому. Какой был бы смысл, если бы элементы управления вводом находились в одном месте на странице, а кнопка отправки была waaay где-то еще?
Входные данные типа submit
имеют смысл только как дочерние элементы элементов
. Но я уверен, что используя CSS, вы можете разместить его где угодно. Помните, что элементы формы «невидимы», поэтому просто разверните теги вокруг большей части вашего контента, и все будет в порядке. Вот документация по формам для HTML4 , она все еще актуальна.