У меня есть форма, в которой есть две кнопки отправки. Я хочу отправить форму вручную с помощью JavaScript и использовать кнопку ввода, чтобы отправить форму, размещенную вместе с другими элементами формы, как это было бы, если форма была отправлена автоматически. На эту тему довольно много болтовни, но я не могу найти ответ.Ручная отправка формы с использованием JavaScript не отправляет кнопку отправки
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
Когда форма представлена выше, с использованием "Do One" кнопки размещены параметры field1="xxx"
, field2="yyy"
, sub1_name="Do One"
.
Но я хочу, чтобы отправить форму вручную ...
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
return mySubmit(document.getElementById('form1'), ...);
}
</script>
но делать вручную представление формы в функции mySubmit
не отправляет параметр sub1_name
. Я могу это понять - я обошел подачу, поэтому форма не представляется с помощью кнопок, поэтому нет смысла публиковать параметр, представляющий кнопку, используемую для отправки формы.
Когда я смотрю на элементы формы в обработчике onclick
, я вижу обе кнопки. Я тоже не слишком удивлен этим, они являются элементами в форме, но я не понимаю, что если я добавлю элемент внутри своего обработчика onclick
, то элемент, который я добавляю, отправлен, и две оригинальные кнопки отправки не публикуются. Просто для полноты картины, вот код, который добавляет элемент:
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
var f = document.getElementById('form1');
var s = document.createElement("input");
s.type="hidden"; s.name="xsubmit_name"; s.value="Bob"; s.id="xsubmit_id";
f.appendChild(s);
// s gets posted
return mySubmit(f, ...);
}
</script>
Добавления входного элемента может работать для меня, но я запутался, как браузер знает размещать свой дополнительный элемент, а не оригинальные два входа элементы.
спасибо.
е только указатель на форму, таким образом, обновления переносятся. Вам просто нужно захватить кнопку, которая вызвала вашу функцию и поместила ее в элемент. Почему вы беспокоитесь о добавлении своего пользовательского представления в любом случае? Я думаю, вы могли бы попробовать добавить метод onclick, который возвращает true или false, тем самым определяя погоду или не отправляя данные по методу по умолчанию, и только к вашей проверке и оставив фактическое представление в браузере. Надеюсь, что это работает, по крайней мере, для гиперссылок. – ted
Что именно делает 'mySubmit'? По какой-либо причине вы не можете использовать форму 'onsubmit' и пусть форма отправляется обычно после выполнения всех ваших действий в вашем скрипте? – RoToRa