Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правильный сабмит формы
 
 автор: ec_stasis   (07.06.2006 в 02:16)   письмо автору
 
 

В форме есть две кнопки TYPE=SUBMIT. При нажатии на Enter данные из формы отсылаются, кроме данных о том какая кнопка нажата. Как сделать одну из кнопок дефолтной или еще что, вобщем, чтобы кнопка срабатывала при нажатии на клавишу Enter? Не используя ДжаваСкрипт.

   
 
 автор: targa   (07.06.2006 в 03:50)   письмо автору
 
   для: ec_stasis   (07.06.2006 в 02:16)
 

Вариант намба 1

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Новая страница 1</title>
</head>

<body>

<form method="POST" action="obrab.php">
    <textarea rows="2" name="S1" cols="20"></textarea>
    <input type="submit" value="Отправить" name="B1">
    <input type="submit" value="Отослать" name="B2">
    <input type="reset" value="Сброс" name="B2">
</form>

</body>


в obrab.php примерно так

if ($_POST['B1']=='Отправить' && empty($_POST['B2'])
{
// значит нажали кнопку Отправить
}
if ($_POST['B2']=='Отослать' && empty($_POST['B1'])
{
// значит нажали кнопку Отослать
}


Вариант намба ту
в форме добавляете невидимое поле

<input type="hidden" name="H1" value="1">


кнопки тогда выглядят так

<input type="submit" value="Отправить" name="B1" onclick="this.form.H1.value=1;">
<input type="submit" value="Отослать" name="B2" onclick="this.form.H1.value=2;">


в obrab.php примерно так

if ($_POST['H1'] == 1)
{
// обработка нажатия кнопки Отправить
}
if ($_POST['H1'] == 2)
{
// обработка нажатия кнопки Отослать
}


По поводу реакции на нажатие клавиш посмотрите атрибут accesskey

   
 
 автор: ec_stasis   (07.06.2006 в 11:35)   письмо автору
 
   для: targa   (07.06.2006 в 03:50)
 

в первом случае при сабмите посредством нажатия клавиши ENTER - $_POST['B1'] $_POST['B1'] будут оба пустые.
Во втором - JS.
Accesskey работает в комбинации с ALT
Все не то... :(

   
 
 автор: 12345   (07.06.2006 в 13:52)   письмо автору
 
   для: ec_stasis   (07.06.2006 в 11:35)
 

Странно, при 2 кнопках должен отсылаться параметр с именем кнопки (задать type=submit name=subm1 value=Отправить) и его value. По имени определяешь, какая нажата. При Enter, насколько помню, не будет отправлено имя ни одной кнопки submit.

   
 
 автор: ec_stasis   (07.06.2006 в 14:11)   письмо автору
 
   для: 12345   (07.06.2006 в 13:52)
 

вот в том-то и дело. А мне надо, чтобы отправлялось имя определенной кнопки...

   
 
 автор: 12345   (07.06.2006 в 15:21)   письмо автору
 
   для: ec_stasis   (07.06.2006 в 14:11)
 

Без использования JS никак. Не лучше ли анализировать параметры на сервере? На JS надо проверить сабмит, убедиться, что ни одна кнопка не нажата (не сработали onmousedown ни на одной), сделать click() по дефолтной кнопке, отменить текущий сабмит, чтобы дождаться инициированного.

   
 
 автор: ec_stasis   (07.06.2006 в 16:00)   письмо автору
 
   для: 12345   (07.06.2006 в 15:21)
 

Но если на клиенте JS отключен, то вообще ничего работать не будет.
А на сервере я анализирую, но мне надо знать что хочет пользователь...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования