0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 76
1

Инициировать нажатие кнопки формы

25.03.2009, 09:21. Показов 14119. Ответов 30
Метки нет (Все метки)

Подскажите,как инициировать нажатие определенной кнопки на странице, не нажимая ее непосредственно.

Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2009, 09:21
Ответы с готовыми решениями:

Как инициировать нажатие на link программно из другого окна?
как инициировать нажатие на link <A HREF='..asp' TARGET='right'><A> програмно из другого окна

Автокликер (заполнение формы + нажатие кнопки)
Нужно сделать простой автокликер, то есть при нажатии на иконку расширения открывается, например,...

На экране расположены текст и две кнопки с надписями "красный" и "зеленый". Нажатие на эти кнопки приводит к соответствующему изменению цвета текста.
На экране расположены текст и две кнопки с надписями "красный" и "зеленый". Нажатие на эти кнопки...

Условие нажатие кнопки
Как написать условие нажатие кнопки мыши в скрипте, то есть так: Если нажат левая кнопка мыши, то...

30
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 10:24 2
[button_id].click();

где button_id - идентификатор нужного тэга

Кстати, так можно кликнуть не только по кнопке, но по любому объекту на странице

Удачи
0
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 76
25.03.2009, 11:38  [ТС] 3
Спасибо за совет!
Только не совсем получается.Идея такая: кликаю по ссылке,которая активирует функцию,где прописано как раз id_1.click.До этого присваиваю кнопке id='id_1'.Но возникает ошибка, что 'id_1' не определено.

Как быть? Заранее спасибо.
0
Maksim
25.03.2009, 12:36 4
Пример покажи...
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 13:10 5
Тогда так:

document.getElementById('id_1').click();

Действительно, обращение к элементу напрямую не всегда работает, но через getElementById ВСЕГДА, если только id элемента уникален
0
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 13:14 6
Кстати, а как ты присваиваешь id кнопке? Непосредственно заданием атрибута в тэге или программно?

Действительно, покажи код (сам тэг button и место, где программно кликаешь)
0
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 76
25.03.2009, 15:15  [ТС] 7
ID присваиваю в атрибуте.Вот есть две формы (2 голосовалки):

<form action='http://voter.land.ru/view.php?pl=22129' method='post'>
<input type='hidden' name='action' value='vote'>
//вопрос и варианты ответов
<input type='submit' id='bt' value='Голосовать'>//сама кнопка
</form>

<form action='http://voter.land.ru/view.php?pl=22131' method='post'>
<input type='hidden' name='action' value='vote'>
//вопрос и варианты ответов
<input type='submit' value='Голосовать'>//сама кнопка
</form>

Есть скрипт:

<SCRIPT LANGUAGE='JavaScript'>
function dater()
{
document.getElementById('bt').click();
}
</SCRIPT>

И есть линк,который запускает функцию:
<p><A HREF='#' onClick='dater()'>LINK

Вот хотелось бы,чтобы пользователь ответил на 2 вопроса нажатием одной кнопки (ссылки) и данные этих форм отправились по соответствующим адресам для учета.

Спасибо за понимание!
0
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 16:42 8
Так бы сразу и сказал! ))

Не запуская скрипта скажу со 100% уверенностью, что броузер ругается не на на элемент с id='bt', а на неизвестный метод dater()

Вставь в скрипт вне тела функции указатель на эту функцию, например так:
Код
dater = dater_fun;
function dater_fun()
...
далее по тексту
И вызывай эту функцию через определенный указатель, т.е. как dater()

Надеюсь, понятно объяснил

Удачи
0
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 17:08 9
А вообще-то в таких случаях нужно не нажатие кнопки имитировать, а просто делать сабмит

form1.submit();
form2.submit();

Хотя сабмит двух форм сразу это тоже левое решение. На какую страницу должно перекинуть юзера после этого: на результаты первого опроса или второго? Или как фишка ляжет?
0
Maksim
25.03.2009, 17:36 10
Ну можно же делать submit форм в отдельные фреймы, или вообще в новые окна, в которых выводить сообщение благодарности, или что-то еще, а через несколько секунд окно закрывать...

А вообще, меня тоже давно интересует вопрос, можно ли делать submit форм в никуда, то есть не открывать никакое окно, однако посылать данные на сервер...
Пока, кроме использования скрытых фреймов или использования объектов типа XMLHttpRequest, я ни до чего не додумался...
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 18:23 11
>> Ну можно же делать submit форм в отдельные фреймы, или вообще в новые окна, в которых выводить сообщение благодарности, или что-то еще, а через несколько секунд окно закрывать...

Только так и придется, иначе один из запросов скорее всего просто не обработается

Но открывать более одного попап-окна - слишком лажово выглядит.
Для более наглядного примера: что если челу надо таким образом сабмитить не 2 формы, а 10? 10 попап-окон даже для порносайта слишком )

>> можно ли делать submit форм в никуда, то есть не открывать никакое окно, однако посылать данные на сервер...
Пока, кроме использования скрытых фреймов или использования объектов типа XMLHttpRequest, я ни до чего не додумался...

Насчет сабмитить не пробовал, а вот вызвать обработчик на сервере без перезагрузки страницы можно весьма незатейливым способом: создать невидимый объект IMG, у которого по нужному событию изменить src на требуемый URL, параметры передаются через GET. Как сделать то же самое через POST пока не знаю.
Ради справедливости замечу, что эта идея придумана не мною

Кстати, возьмите на заметку, иначе когда-нибудь придется не один час безуспешно раскидывать мозгами: если у объекта IMG не указан src, то браузер в качестве src грузит дефолтную страницу. В итоге на сайтах с поддержкой сессий или основанных на XML могут творится невообразимые вещи.
0
Maksim
25.03.2009, 18:38 12
Вообще, если чел сабмитит десять форм пользуясь системами голосований типа http://voter.land.ru, то это больной чел...

Уж можно как-то обойтись сабмитом одной единственной формы...
Если уж очень надо, можно на сервере рассортировать результаты сабмита одной большой формы, и сделать десять сабмитов из серверного скрипта, пощадив клиента...

Тем не менее, скрытые iframes проблему тоже решают...

По поводу рисунков, скриптов, и других элементов с querystring в добавление к source я знаю... Вопрос все-таки в том, как сделать POST...
Пока известные решения - только IFRAME и Msxml2.XMLHTTP....
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
25.03.2009, 18:58 13
Поностью согласен, именно поэтому и написал, что сабмитить несколько форм одновременно - это лажа.

По поводу сабмита в никуда видимо единственно правильное решение через XMLHTTP, т.к. скрытые фреймы - это все та же лажа.

Думаю, что поскольку форма задумывалась как средство общения между клиентом и сервером, разработчикам протокола http в голову не пришло, что клиент захочет только послать данные без получения подтверждения.

Вот и приходится извращаться
0
Maksim
25.03.2009, 19:05 14
скрытый IFRAME лучше использовать из-за проблем совместимости браузеров, будь она неладна...

А извращаться приходится вовсе не по вине разработчиков http...

Это создатели браузеров могли бы предусмотреть возможность иметь 'нулевое' окно... К примеру делать формы с TARGET=NULL, VOID или что-то подобное... Идея понятна, я думаю...
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
26.03.2009, 10:53 15
Если один из разработчиков браузера добавит такую фичу, а остальные нет, то это только добавит тебе головной боли

Вообще-то по хорошему браузер должен уметь грамотно работать с общепринятыми спецификациями (HTML, XML, CSS и т. п.) и не добавлять никаких приблуд, равно как и не сокращать их.

Так что, тогда уж добавлять TARGET=NULL для формы нужно в спецификацию HTML, хотя кому вообще сейчас это интересно развивать HTML...
0
Maksim
26.03.2009, 11:33 16
HTML это язык разметки для БРАУЗЕРА...
Если в сецификацию HTML добавить изменение, браузеры это изменение поддерживать не начнут....
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
26.03.2009, 18:44 17
вообще-то это и ежу понятно

я имел в виду другое: все должно строиться на основе спецификаций, будет спецификация - будет поддержка

а развитие HTML никому не нужно, т.к. есть задачи поинтересней, возможностей отображения документа и так выше крыши, а интерфейсные приблуды в HTML - это анахронизм, их заменят готовые программные компоненты (что это будет COM-объект или что-то еще не суть важно)

документ должен представляться в виде XML, а HTML использоваться только для отображения (и то это приемлимое решение только для статичных документов, для интерактивности следует использовать готовые стандартизированные компоненты)
0
Archy
18.04.2009, 22:32 18
Хочу программно нажимать кнопку отправки формы (submit), но что-то не выходит ( использую методы имя_кнопки.click() или имя_кнопки.submit() )
0 / 0 / 0
Регистрация: 14.03.2008
Сообщений: 39
19.04.2009, 11:03 19
>> Хочу программно нажимать кнопку отправки формы (submit), но что-то не выходит ( использую методы имя_кнопки.click() или имя_кнопки.submit() )

Либо кнопка должна иметь тип submit, либо имя_формы.submit() (второе правильней)
0
Archy
22.04.2009, 20:42 20
Большое спасибо! имя_формы.submit() работает.
Интересно как быть с простой кнопкой, выводящей какое-либо сообщение
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2009, 20:42
Помогаю со студенческими работами здесь

Нажатие кнопки на сайте
Вообщем, есть сайт, на котором каждые 30 секунд крутится рулетка, и мне надо, чтобы на 5 секунде...

Автоматическое нажатие кнопки
Здравствуйте! незнаю в эту ветку задал вопрос или нет! Ситуация такая, есть скрипт(макрос) который...

Нажатие кнопки на стороннем сайте
Приветствую, можно ли написать скрипт, который каждую минуту нажимает на кнопку стороннего сайта?...

Нажатие кнопки в браузере Chrome
Всем, добрый день. Занимаюсь разработкой под Андроид и понадобилось сделать вставку Javascript....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru