Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Форма с двумя кнопками


Автор: R.M. 30.9.2005, 08:06
Здрасте, у меня есть форма - прайслист, там чекбоксы и две кнопки, одна - "посчитать стоимость" вторая "заказать", если я ставлю на первую <input type=button> и на онклик появление php страницы в которой считается стоимость выбранных пунктов, но т.к. это не субмит выбранные чекбоксы туда никаким образом не передаются, если я её делаю не button а submit, то форма и на открываемом срабатывает и на том где она находица, подскажите пожалуйста, как мне сделать, чтобы при нажатии разных кнопок субмитились разные страницы, (хотя можно и одна) главное чтобы если нажата первая кнопка форма передавалась в открываемое окно а при нажатии второй обрабатывалось в том же, я подозреваю что это делается через return false но повторюсь в js я совсем плохо шарю

Автор: -=Ustas=- 30.9.2005, 09:41
Кидай свой код сюда...

Автор: R.M. 30.9.2005, 09:44
Код

<form action=calc.php method=post>
<input type=checkbox name=1>1<br>
<input type=checkbox name=2>2<br>
<input type=submit value="Посчитать стоимость" onClick="javascript:window.open(calc.php','example','scrollbars,resizable,width=500,height=450');void(0);"> <input type=submit value=Заказать>

Автор: Aliance 30.9.2005, 13:26
Две кнопки субмит это оригинально...
А что мешает все сделать в 1 окне?

Автор: R.M. 30.9.2005, 13:48
Aliance

Цитата(Aliance @ 30.9.2005, 14:26)
Две кнопки субмит это оригинально...

smile

Цитата(Aliance @ 30.9.2005, 14:26)
А что мешает все сделать в 1 окне?

Просто такая задумка, если юзер хочет посмотреть скока стоит он жмёт одну кнопку появляется окно, если ево устраивает он жмёт "заказать"
Можно конечно и в одном. А можно сделать чтобы стоимость сразу выводилась внизу формы при помощи JS?

Автор: DEER 30.9.2005, 14:44
Делай обе кнопки SubMit'аим, и при нажатии у них напиши функцию, которая меняет у формы action

Автор: Sardar 30.9.2005, 22:25
Цитата(DEER @ 30.9.2005, 13:44)
Делай обе кнопки SubMit'аим, и при нажатии у них напиши функцию, которая меняет у формы action

Можно проще, дать сабмитам имена, а из скрипта проверять наличие переменной.

Автор: R.M. 1.10.2005, 10:20
Sardar

Цитата(Sardar @ 30.9.2005, 23:25)
Можно проще, дать сабмитам имена, а из скрипта проверять наличие переменной.

Это понятно, но получится тока в одном окне а нельзя ли сделать чтобы при нажатии одной кнопки посылались данные в новое окно а при нажатии второй в этом же окне??

Автор: Wolf1994 1.10.2005, 13:09
Можно всё сделать проще. Привожу код со своего сайта для подсчёта стоимости выбранных пунктов:
Код

<?php
//переменные задающие цены
$pricetop100=15;
$priceblog=5;
$priceforum=15;
$priceguest=10;
$pricecur="WMZ";

//функция на JS для подсчёта цены по выбранным пунктам
print 'function price()';
print '{';
print ' pricer=0;';
print ' if (document.fullorder.ordergb.checked==true)';
print ' {';
print '  pricer=pricer+'.$priceguest.';';
print ' }';
print ' if (document.fullorder.orderfm.checked==true)';
print ' {';
print '  pricer=pricer+'.$priceforum.';';
print ' }';
print ' if (document.fullorder.orderbg.checked==true)';
print ' {';
print '  pricer=pricer+'.$priceblog.';';
print ' }';
print ' if (document.fullorder.ordertop100.checked==true)';
print ' {';
print '  pricer=pricer+'.$pricetop100.';';
print ' }';
print ' document.all("pr").innerHTML=pricer;';
print '}';
print '</script>';

//Один из чекбоксов - для примера
print '<input type="checkbox" name="orderbg" title="Купить" style="cursor: help" onclick=price()>';

//Вывод суммы
print 'Сумма:<SPAN id="pr">0</SPAN>';
print $pricecur;
?>

Прошу прощения за PHP - сделал как мне было удобнее. Тоже самое можно реализовать на JS, отбросив PHP-тэги.
Кстати, лучше, по-моему, использовать не "document.all", а "getelementbyID" - я в этом не силён.

Автор: Sardar 1.10.2005, 22:00
Цитата
чтобы при нажатии одной кнопки посылались данные в новое окно а при нажатии второй в этом же окне?

Навесь на тu что открывает новое окно onlick="this.form.target='_blank'; return true". Соответственно для порядка можно навесить это же для кнопки "в этом окне", но target='_self'

Автор: R.M. 2.10.2005, 00:17
Wolf1994
Чтото он всегда 0WMZ выдаёт

Sardar
а какнить с window.open низя? хотелось маленькое окошко с одной строчкой, или можно вобще через alert

Автор: Wolf1994 2.10.2005, 13:48
Цитата
Чтото он всегда 0WMZ выдаёт

В IE работает нормально. Чтобы работало нормально везде, как я уже сказал, надо вместо "document.all" использовать "document.getElementByIdl"...
Добавлено @ 13:49
Да, забыл добавить. Форма должна называться "fullorder".

Автор: Sardar 2.10.2005, 17:27
Цитата
а какнить с window.open низя? хотелось маленькое окошко с одной строчкой

У многих стоит лиса с настройками не позовляющих маленькие окна, всё открываеться в табах, у меня так.

Читай тему "Окна и фреймы" от Aliance, научишся открывать окна, вторым параметром задаём имя. Перед отправкой формы открываем окно с именем, меняем у формы target="имя нового окна", далее подтверждаем отправку (return true). Форма загрузиться в новом маленьком окошке.

Автор: R.M. 3.10.2005, 09:54
Sardar

Вобщем насколько я понял, лучше делать без JS и с одной кнопкой smile

Автор: Sardar 3.10.2005, 11:53
Делай как тебе удобно smile
Если можно без JS, зачем это навязывать пользователю? в и-нет кафе часто JS вырубают. Xотя задача плёвая, нужно лишь желание smile Открыть окно, помимо статьие Aliance на форуме ещё сотня топиков с разьяснениями. Далее сменить target у формы, ну это form.target="что нибудь", ну а про return true в обработчике события должен знать каждый. Если тебе это всё охватить не под силу, лучше забей на JS, ибо это базис/азы, а обьяснять приятно замороченные вещи.

Автор: R.M. 4.10.2005, 08:16
Sardar

Спасибо, я решил подругому сделать

Автор: Aliance 4.10.2005, 12:47
Обычно тут выкладывают своё решение...

Автор: R.M. 4.10.2005, 12:50
Aliance

Я знаю. но решение совсем простое поэтому не стал выкладывать. сделал просто с одной кнопкой и на той же странице

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)