Вход

Просмотр полной версии : Отправка определенной формы


roza
24.10.2013, 11:39
имеется вот такая страница с тремя формами

<form method="get" action="">
<input type="hidden" name="cmd" value="getUserArmy" />
<input type="hidden" name="usb" value="4" />
<input type="hidden" name="show" value="2" />
<input class="submit" style="width: 100px" type="submit" value="Заказать" name="creat4" /> <input class="submit" style="width: 40px" type="text" value="14" name="how" /> / 14 <input type="hidden" name="uid" value="849589B8-8B93-44E4-940E-AE014E3BF0AE" />
</form>
<form method="get" action="">
<input type="hidden" name="cmd" value="getUserArmy" />
<input type="hidden" name="usb" value="5" />
<input type="hidden" name="show" value="2" />
<input class="submit" style="width: 100px" type="submit" value="Заказать" name="creat5" /> <input class="submit" style="width: 40px" type="text" value="10" name="how" /> / 10 <input type="hidden" name="uid" value="849589B8-8B93-44E4-940E-AE014E3BF0AE" />
</form>
<form method="get" action="">
<input type="hidden" name="cmd" value="getUserArmy" />
<input type="hidden" name="usb" value="6" />
<input type="hidden" name="show" value="2" />
<input class="submit" style="width: 100px" type="submit" value="Заказать" name="creat6" /> <input class="submit" style="width: 40px" type="text" value="14" name="how" /> / 14 <input type="hidden" name="uid" value="849589B8-8B93-44E4-940E-AE014E3BF0AE" />
</form>

формы уже заполнены,подскажите как правильно отправить любую(одну) из них из js скрипта
document.forms.submit(); не работает
document.getElementById("creat5").submit(); тоже не работает
что я упустила из виду?

ksa
24.10.2013, 13:57
document.forms.submit(); не работает
Потому как forms это "коллекция" форм...

Укажи индекс нужной формы и будет тебе счастие. ;)

document.getElementById("creat5").submit(); тоже не работает
Потому как у тебя нет элементов с таким ИД...

Присвой формам ИД и будет тебе счастие. ;)

roza
24.10.2013, 17:30
спасибо за подсказку,но я не знаю откуда брать эти индексы,кроме варианта заново перезаполнить все (уже заполненные)формы с приданием нужных индексов.Это слишком сложное решение,т.к. я всего лишь 3 формы написала,в реале их гораздо больше.
у каждой присланной формы есть готовая кнопка отправки

<input class="submit" style="width: 100px" type="submit" value="Заказать" name="creat4" />

отличаютя они всего лишь именем name="creat4","creat5",...,"creat1000"

подскажите есть возможность отправлять при помощи имени кнопки
тупо используя клик на эту форму

и как это будет работать,если внутри добавится чекбокс например:

</form>
<form method="get" action="">
<input type="hidden" name="cmd" value="getUserArmy" />
<input type="hidden" name="usb" value="6" />
<input type="hidden" name="show" value="2" />
<input type="checkbox" name="bbb"> бронь
<input type="checkbox" name="aaa"> выкуп
<input class="submit" style="width: 100px" type="submit" value="Заказать" name="creat6" /> <input class="submit" style="width: 40px" type="text" value="14" name="how" /> / 14 <input type="hidden" name="uid" value="849589B8-8B93-44E4-940E-AE014E3BF0AE" />
</form>

// ==UserScript==
// @name My Script
// @description A brief description of your script
// @author Your Name
// @include http://*
// @version 1.0
// ==/UserScript==
document.getElementsByName('aaa')[0].checked =true;
document.getElementsByName('how')[0].value =14;
document.forms[0].submit()

заполняется всё,но не отправляется на сайт,где ошибка?

roza
24.10.2013, 19:21
помогите дописать

roza
24.10.2013, 22:10
// ==UserScript==
// @name My Script
// @description A brief description of your script
// @author Your Name
// @include http://*
// @version 1.0
// ==/UserScript==
document.getElementsByName('aaa')[0].checked =true;
document.getElementsByName('how')[0].value =14;
setTimeout(function() {document.getElementsByName("creat6")[0].submit()},2000);
не получается отправлять форму,весь интернет перерыла,не пойму что мешает отправке

roza
24.10.2013, 23:18
ksa,
А как присвоить формам ид через userscript?

roza
25.10.2013, 03:29
document.forms[0].submit() всё таки отправляет форму самую первую,вот только результат в командной строке отличается.Не хватает creat6 и Заказать
получается:
/?cmd=getUserArmy&usb=4&show=2&how=14&uid=849589B8-8B93-44E4-940E-AE014E3BF0AE
А должно быть(при нажатии Enter или мыши)
/?cmd=getUserArmy&usb=4&show=2&creat4=Заказать&how=14&uid=849589B8-8B93-44E4-940E-AE014E3BF0AE

кто нибудь знает верное решение?Тут наверняка используется name submit,только я не пойму где я ошибаюсь

roza
27.10.2013, 18:32
document.getElementsByName('aaa')[0].checked = true;
setTimeout(function(){document.getElementsByName(' name')[0].click()},2000);
вот так вот работает

danik.js
27.10.2013, 19:02
document.getElementsByName('how')[0].value =14;

Не 'how', а 'show'. Как можно быть такой растяпой?

roza
27.10.2013, 22:06
Не 'how', а 'show'. Как можно быть такой растяпой?

как раз таки у меня всё правильно написано для заполнения формы,это вы невнимательно посмотрели на hidden там действительно есть show,но в данном случае оно не требуется.

Хотя вы правы я динозавр в программировании,но невнимательностью не страдаю и пусть я несколько дней потратила на решение простенькой задачки,зато самостоятельно.

danik.js
28.10.2013, 05:33
roza, .:-) все верно