Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827

Разъединить действие двух клавишь submit в одной форме

17.05.2019, 21:14. Показов 3290. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма с несколькими текстовыми полями. Каждое поле ответственно за какой-то признак (аргумент определенного элемента). Некая функция отвечает за их применение. Когда поле пустое - естественно ничего в отношении этого признака не применяется. Один из признаков - это цвет. Его конечно можно вбивать руками, но все цвета не упомнишь, да и часто лень думать. Можно подставить js чтобы выбирал цвет и вбивал его в пустое поле, но не хочется пока цеплять джава-скрипт. Можно выбрать html кнопку "color". Но тогда поле будет всегда считаться заполненным и применяться даже тогда, когда ты этого не хочешь, хоть белый установи по дефолту, хоть какой. По крайней мере пока не знаю можно ли этой кнопкой задавать именно отсутствие цвета.
Можно создать рядом ещё одно текстовое поле и добавить кнопку submit с надписью типа "Выбрать", жать на кнопку color, выбирать цвет, нажимать на кнопку "Выбрать" и переносить значение цвета в текстовое поле. Но возникает два момента.
1. Если в других текстовых полях уже что-то вбито, то оно применится, а не хотелось бы, вдруг какие-то неправильные значения.
2. Если цвет не выбирал, а вбил значения в другие текстовые поля и захотел их применить, то значение цвета перенесется в текстовое поле, и его потом придется чистить.
Поэтому вопрос, можно ли как-то в одной форме организовать разную реакцию двух кнопок submit? Или как вообще ещё можно организовать подобное?
Если надо, приведу код формы с пхп вставками, ответственными за перенос значения цвета в текстовое поле (она простенькая)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2019, 21:14
Ответы с готовыми решениями:

CF 7. Два разных кнопки submit в одной форме
С помощью фильтра add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_start_function' ); я могу после отправки письма совершать...

Вызов submit у двух форм одной кнопкой
Доброго дня, вопрос следующий есть две формы <form class="form-horizontal ms2_form" method="post"...

При нажатии на кнопку на одной форме (Form1) выполнить действие на другой (Form2)
Как сделать так чтобы при нажатии на клавишу button на одной форме(Form1) выполнялись действия OnCreate другой формы(Form2) и открывается...

21
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 21:38
DyadyaGe, Если вы ищете самое простое решение, то добавьте чекбокс

HTML5
1
2
3
4
5
6
7
8
<form method="post">
    <textarea name="text"></textarea>
    <div>
        <label><input type="checkbox" name="is_set_color" value="1">Установить цвет</label>
        <input type="color" name="color">
    </div>
    <button>Сохранить</button>
</form>
PHP
1
2
$text = $_POST['text'];
$color = !empty($_POST['is_set_color'] ? $_POST['color'] : null;
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 21:41
DyadyaGe, можно в инпуты с кнопками добавить атрибуты name="submit_1" и name="submit_2", а на серверной части проверять, какая из кнопок была нажата, типа так:
PHP
1
2
if ( isset($_POST['submit_1']) ) { /* Нажата 1-я */ } 
if ( isset($_POST['submit_2']) ) { /* Нажата 2-я */ }
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 21:49  [ТС]
Цитата Сообщение от VNIIAEN Посмотреть сообщение
можно в инпуты с кнопками добавить атрибуты name="submit_1" и name="submit_2", а на серверной части проверять, какая из кнопок была нажата, типа так:
Так я уже делал, почему-то не помогает. Даже отдельно прописывал
PHP
1
2
3
4
5
if(isset($_POST['button1'])) {
    echo 'Нажата была кнопка с именем button1';
} elseif(isset($_POST['button2'])) {
    echo 'Нажата была кнопка с именем button2';
}
Но печатает в любом случае кнопка 1,даже когда нажимаешь 2. И как бы главная - 2.
Цитата Сообщение от sad67man Посмотреть сообщение
Если вы ищете самое простое решение, то добавьте чекбокс
Честно говоря про чекбоксы не думал, но надо подумать, поэкспериментирую - скажу.
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 22:03
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Так я уже делал, почему-то не помогает.
Значит что-то не правильно делали.
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Даже отдельно прописывал
В этом условии не должно быть elseif, условий должно быть два:
PHP
1
2
3
4
5
6
7
if (isset($_POST['button1'])) {
    echo 'Нажата была кнопка с именем button1';
}
 
if (isset($_POST['button2'])) {
    echo 'Нажата была кнопка с именем button2';
}
При этом в теге <input> конечно же должен быть атрибут name="buttonN":
HTML5
1
2
3
4
<form method="post">
    <input type="submit" name="button1">
    <input type="submit" name="button2">
</form>
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 22:07
DyadyaGe, вот вам минимально воспроизводимый пример (сохранить весь код в один php-файл):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
if (isset($_POST['button1'])) {
    echo 'Нажата была кнопка с именем button1';
}
 
if (isset($_POST['button2'])) {
    echo 'Нажата была кнопка с именем button2';
}
 
?>
 
<form method="post">
    <input type="submit" name="button1">
    <input type="submit" name="button2">
</form>
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:08
VNIIAEN, elseif тоже прокатит)
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 22:10
Цитата Сообщение от sad67man Посмотреть сообщение
elseif тоже прокатит)
Не спорю, просто нет в нём необходимости.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 22:13  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Если вы ищете самое простое решение, то добавьте чекбокс
Слегка переделал ваш вариант вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
<form method="post">
    <textarea name="text"><?php
if (isset($_POST['is_set_color']))
{echo $_POST['color'];}
?></textarea>
    <div>
        <label><input type="checkbox" name="is_set_color" value="">Установить цвет</label>
        <input type="color" name="color" value="">
    </div>
    <button>Сохранить</button>
</form>
В таком виде работает. Но все таки лишнее телодвижение с чекбоксом... Хотелось бы чтоб пхп сам все делал.
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Значит что-то не правильно делали.
Сейчас буду разбираться с вашими подсказками, ато сходу не все понял.
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Цитата Сообщение от sad67man Посмотреть сообщение
А value для кнопок прописывали?
Прописывал
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 22:15
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Сейчас буду разбираться с вашими подсказками, ато сходу не все понял.
Да там достаточно просто сохранить весь код в файл, и запустить.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:19
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Но все таки лишнее телодвижение с чекбоксом...
Дело ваше, я все равно не понял до конца в чем заключается задача.
Только что вы в таком случае будете делать при нажатии обычной кнопки? там вы будете не учитывать цвет? Или для каждого признака будет своя кнопка? Сколько тогда будет телодвижений, чтоб сохранять каждый признак по отдельности? Это при том, что при нажатии на кнопку "Сохранить цвет" у вас будет перегружаться страница.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 22:24  [ТС]
Цитата Сообщение от VNIIAEN Посмотреть сообщение
Да там достаточно просто сохранить весь код в файл, и запустить.
В том то и дело, что отдельно от моей формы все работает. Не пойму чем моя отличается.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:26
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Не пойму чем моя отличается.
Покажите код формы. И обработчика за одно.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 22:29  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Дело ваше, я все равно не понял до конца в чем заключается задача.
Ну в текстовые поля, напр, можно вбить размеры в пикселях и тп, тип, позицию (ну это можно прикрутить через радио-кнопку),эффекты какие-то. Ну а цвет в любом случае нужно выбирать. А пока поле пустое, значение берется из файла стилей. Потом эти значения можно или туда записывать, или применить "временно" к странице, вплоть до сохранения сессии.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:35
Цитата Сообщение от DyadyaGe Посмотреть сообщение
Ну а цвет в любом случае нужно выбирать
Я бы на вашем месте прикрутил бы какой-нибудь color-picker на jquery
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 22:35  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Покажите код формы. И обработчика за одно.
HTML5
1
2
3
4
5
6
7
<form action="" method="post" enctype="multipart/form-data">
цвет фона для чего-то:<input name="button1" value="#ffffff" type="color"><input name="button1" value="выбрать" type="submit"><input name="SetWName[w_bg_color]" value="<?php if(isset($_POST['button1'])) echo $_POST['button1']; ?>" type="text"><br>
цвет текста чего-то: <input name="SetWName[w_text_color]" value="" type="text"><br>
ширина чего-то: <input name="SetWName[w_width]" value="" type="text"><br>
высота чего-то: <input name="SetWName[w_height]" value="" type="text"><br>
                   <input name="button2" value="сменить" type="submit">
                </form>
И эта проверка все равно показывает нажатие кнопки1
PHP
1
2
3
4
5
if(isset($_POST['button1'])) {
    echo 'Нажата была кнопка с именем button1';
} elseif(isset($_POST['button2'])) {
    echo 'Нажата была кнопка с именем button2';
}
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:36
Лучший ответ Сообщение было отмечено DyadyaGe как решение

Решение

Цитата Сообщение от DyadyaGe Посмотреть сообщение
И эта проверка все равно показывает нажатие кнопки1
У вас у инпута type="color" прописан name="button1", вот от туда значение и берется.
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
17.05.2019, 22:40
Цитата Сообщение от DyadyaGe Посмотреть сообщение
В том то и дело, что отдельно от моей формы все работает. Не пойму чем моя отличается.
У вас есть два варианта: прототип и ваш вариант. Вот и сравнивайте, что где не так, и исправляйте, что бы работало так, как вам угодно.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
17.05.2019, 22:42
Цитата Сообщение от DyadyaGe Посмотреть сообщение
А пока поле пустое, значение берется из файла стилей
Вы можете в color input установить цвет по умолчанию такой же как у вас в стилях.
0
18 / 13 / 6
Регистрация: 04.04.2019
Сообщений: 827
17.05.2019, 23:00  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
У вас у инпута type="color" прописан name="button1", вот от туда значение и берется.
О, спасибо, невнимательность и спешка... кстати, ещё и в последней проверке надо менять проверочное имя на имя инпута колор...
Все, вопрос решен. Всем спасибо )
Цитата Сообщение от sad67man Посмотреть сообщение
Я бы на вашем месте прикрутил бы какой-нибудь color-picker на jquery
Я в принципе уже нашел такой скриптик и в некоторых примерах прикручивал его, но поскольку я все это делаю пока что в образовательных целях, то хотелось именно на пхп. В том числе и чтобы понять разницу по нагрузке и тп. Хотя конечно по цветам он вроде как уступает джава-скрипту (ну или я не разобрался)

А где ставить, галочку, что вопрос решен?

Добавлено через 7 минут
Цитата Сообщение от sad67man Посмотреть сообщение
Вы можете в color input установить цвет по умолчанию такой же как у вас в стилях.
Это если один сайт, то можно заморочится, а если их больше? А если захочется поменять дефолтный?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2019, 23:00
Помогаю со студенческими работами здесь

Связь двух комбобоксов на одной форме
Подскажите пожалуйста как сделать, чтобы при выборе в первом комбобоксе допустим &quot;5&quot;, во втором отображались только...

Построение графиков двух функций на одной форме
Задать два графика на одной форме , на которых будет выдаваться по нажатию кнопки графики , на первом графике первая функция ,на втором...

Смена положение элементов на форме путем нажатия клавишь
Очень простой вопрос, но я не могу вспомнить как это сделать. А именно. В проекте ASP.NET WebApplication можно &quot;натаскивать&quot;...

Хочу чтоб объект из imagelist'a двигался по форме при нажатии клавишь
Подскажите новичку в VB, PliZZZ! Хочу чтоб объект из imagelist'a двигался по форме при нажатии клавиш!

Как сделать авторизацию двух пользователей причем один имеет доступ ко всему, а второй только к одной форме?
Пожалуйста помогите Добавлено через 8 часов 46 минут Windows Worm c#


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru