Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

43_HTML_FormPersister: новый взгляд на построение форм (Дмитрий Котеров, оценка: 3)
Goto page Previous  1, 2, 3, 4, 5  Next
Author Message
Alexey00
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Aug 16, 2005 12:42 pm (написано за 1 минуту 46 секунд)
   Post subject:
Reply with quote

Спасибо, Дмитрий!
Я школьник, который плохо выучил уроки.

 * @author Dmitry Koterov
 * @version 1.93
 * @package HTML
Дмитрий Котеров wrote:
А во-вторых, никто php.net/ini_set еще не отменял.
Конечно же! RTFM мне.
Back to top
IlVin
Заглянувший



Joined: 18 Aug 2005
Posts: 14
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Aug 18, 2005 10:05 pm (спустя 2 дня 9 часов 22 минуты; написано за 6 минут 10 секунд)
   Post subject:
Reply with quote

Дмитрий, а зачем Вы ввели новый атрибут тега INPUT - default="" ?
Во FrontPage в WYSIWIG режиме невозможно его установить :-(
Там для этих целей используется атрибут value="".

Думаю, что немного усложнив алгоритм, можно отказаться от
этого дополнительного атрибута, например: введя анализ переменных
$_GET, $_POST и атрибута value="" на определенность значений.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Aug 19, 2005 9:41 am (спустя 11 часов 36 минут; написано за 37 секунд)
   Post subject:
Reply with quote

Нельзя value трогать. Нарушится совместимость и прозрачность: главная идеология FormPersister - в том, чтобы быть незаметным для уже работающих скриптов.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Fri Aug 19, 2005 10:22 am (спустя 41 минуту; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

А можно 2 режима работы ?
1. Чтобы прозрачно для совместимости и
2. непрозрачно для удобства и новых форм ?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Aug 19, 2005 11:35 am (спустя 1 час 13 минут; написано за 1 секунду)
   Post subject:
Reply with quote

Низзя.
Back to top
View user's profile Send private message Send e-mail
ExHealer
Участник форума



Joined: 07 Dec 2004
Posts: 73
Карма: 7
   поощрить/наказать


PostPosted: Sat Sep 03, 2005 7:06 pm (спустя 15 дней 7 часов 30 минут; написано за 2 минуты 57 секунд)
   Post subject:
Reply with quote

Обнаружил странность похожую на ошибку.

Код
Code (php): скопировать код в буфер обмена
        $ob = new HTML_FormPersister();
        echo (www.php.net/echo) $ob->process( '<input type="text" name="lastname" onkeypress="return(checkLength(event) && checkLetterOnly(event))">' );
Выводит
Code (html): скопировать код в буфер обмена
        <input (december.com/html/4/element/input.html) type="text" name="lastname" onkeypress="return(checkLength(event) &amp;&amp; checkLetterOnly(event))" value=""> (december.com/html/4/element/.html)
Обратите внимаение на &amp;&amp;

Код
Code (php): скопировать код в буфер обмена
        $ob = new HTML_FormPersister();
        echo (www.php.net/echo) $ob->process( '<input type="text" onkeypress="return(checkLength(event) && checkLetterOnly(event))">' );
Выводит
Code (html): скопировать код в буфер обмена
        <input (december.com/html/4/element/input.html) type="text" onkeypress="return(checkLength(event) && checkLetterOnly(event))"> (december.com/html/4/element/.html)
Вот.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Sep 04, 2005 11:23 am (спустя 16 часов 17 минут; написано за 25 секунд)
   Post subject:
Reply with quote

Никаких странностей. Все строго по стандарту. Забустите в браузере и убедитесь, что все продолжает работать.
Back to top
View user's profile Send private message Send e-mail
Edain
Заглянувший



Joined: 24 Mar 2005
Posts: 12
Карма: 2
   поощрить/наказать

Location: Россия, г. Вологда

PostPosted: Fri Sep 23, 2005 4:00 pm (спустя 19 дней 4 часа 36 минут; написано за 1 минуту 37 секунд)
   Post subject: Предложение
Reply with quote

У меня предложение: добавьте псевдопараметр focus для полей input типа text и password (особенно для последнего будет актуально) по аналогии с confirm. И чтобы заменялся на что-то типа: onfocus="this.select();".
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Sep 26, 2005 9:55 am (спустя 2 дня 17 часов 55 минут; написано за 21 секунду)
   Post subject:
Reply with quote

А вручную прописать не судьба? Зачем усложнять библиотеку?
Back to top
View user's profile Send private message Send e-mail
Edain
Заглянувший



Joined: 24 Mar 2005
Posts: 12
Карма: 2
   поощрить/наказать

Location: Россия, г. Вологда

PostPosted: Mon Sep 26, 2005 4:38 pm (спустя 6 часов 43 минуты; написано за 2 минуты 25 секунд)
   Post subject:
Reply with quote

Дело хозяйское. Но добавляется в класс одной строкой:
if (isSet($attr['focus'])) {$attr['onfocus'] = 'onfocus="this.select();"'; }
Ничего сложного. Но, повторюсь, дело хозяйское.
Back to top
View user's profile Send private message
ExHealer
Участник форума



Joined: 07 Dec 2004
Posts: 73
Карма: 7
   поощрить/наказать


PostPosted: Tue Oct 25, 2005 11:59 am (спустя 28 дней 19 часов 21 минуту; написано за 2 минуты 43 секунды)
   Post subject:
Reply with quote

Обнаружил странность поведения, скорее даже ошибку.
Code (php): скопировать код в буфер обмена
function getTime() {
        $_t = explode (www.php.net/explode)( " ", microtime (www.php.net/microtime)() );
        return $_t[ 1 ] + $_t[ 0 ];
}

$_html = '<select onchange="compute()" name="count"><option value="0">0</option><option value="1">1</option></select>';
$_time = getTime();
$ob = new HTML_FormPersister();
$_html = $ob->process( $_html );
$_time = getTime() - $_time;
echo (www.php.net/echo) $_time . '<br>';

$_html = '<select onchange="compute()" name="count"><option value="0">0</option><option value="1">1</option>';
$_time = getTime();
$ob = new HTML_FormPersister();
$_html = $ob->process( $_html );
$_time = getTime() - $_time;
echo (www.php.net/echo) $_time . '<br>';

$_html = '<select onchange="compute()" name="count"><option value="0">0</option><option value="1">1</option></select>';
$_time = getTime();
$ob = new HTML_FormPersister();
$_html = $ob->process( $_html );
$_time = getTime() - $_time;
echo (www.php.net/echo) $_time . '<br>';

$_html = '<select name="count"><option value="0">0</option><option value="1">1</option>';
$_time = getTime();
$ob = new HTML_FormPersister();
$_html = $ob->process( $_html );
$_time = getTime() - $_time;
echo (www.php.net/echo) $_time . '<br>';

$_html = '<select name="count"><option value="0">0</option><option value="1">1</option></select>';
$_time = getTime();
$ob = new HTML_FormPersister();
$_html = $ob->process( $_html );
$_time = getTime() - $_time;
echo (www.php.net/echo) $_time . '<br>';
Результаты:
0.00743412971497
5.4700820446
0.00155997276306
0.0195648670197
0.0027289390564

Как видно, html код
Code (html): скопировать код в буфер обмена
<select (december.com/html/4/element/select.html) onchange="compute()" name="count"> (december.com/html/4/element/.html)<option (december.com/html/4/element/option.html) value="0"> (december.com/html/4/element/.html)0</option><option (december.com/html/4/element/option.html) value="1"> (december.com/html/4/element/.html)1</option>
из-за отсутствия закрывающего тэга и наличия onchange сильно тормозит работу.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 25, 2005 12:58 pm (спустя 58 минут; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

ExHealer
а Вы чего хотели?
Поскольку код разбирается регами, то и результат получается соответствующий.
Посмотрите, что будет если onchange перенести в предпоследний фрагмент.
Back to top
View user's profile Send private message
ExHealer
Участник форума



Joined: 07 Dec 2004
Posts: 73
Карма: 7
   поощрить/наказать


PostPosted: Tue Oct 25, 2005 1:16 pm (спустя 17 минут; написано за 1 минуту 50 секунд)
   Post subject:
Reply with quote

WingedFox
будет фрагмент №2.

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

разве нет?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 25, 2005 1:22 pm (спустя 6 минут; написано за 2 минуты 7 секунд)
   Post subject:
Reply with quote

ExHealer wrote:
будет фрагмент №2.
Пробовали?
ExHealer wrote:
необходимо предусмотреть отлавливание таких моментов
Это невозможно предусмотреть без анализа разметки (что делается теми же регами).
Back to top
View user's profile Send private message
ExHealer
Участник форума



Joined: 07 Dec 2004
Posts: 73
Карма: 7
   поощрить/наказать


PostPosted: Tue Oct 25, 2005 1:30 pm (спустя 7 минут; написано за 4 минуты 10 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
Это невозможно предусмотреть без анализа разметки (что делается теми же регами).
Правильно, делается теми же тэгами.
Сейчас, как мне кажется, это делается не совсем корректно.

Ведь это же не регулярные выражения "поедают" 5 секунд?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 25, 2005 1:33 pm (спустя 3 минуты; написано за 54 секунды)
   Post subject:
Reply with quote

ExHealer
А хто же тогда? =)
там больше ничего и нет =)
Посмотрите код, почитайте у Фридла теорию работы регов.
ExHealer wrote:
Сейчас, как мне кажется, это делается не совсем корректно.
Как говорится - попробуйте сделать лучше.
Back to top
View user's profile Send private message
Грачик
Заглянувший



Joined: 26 Oct 2005
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Wed Oct 26, 2005 5:45 pm (спустя 1 день 4 часа 11 минут; написано за 10 минут 15 секунд)
   Post subject:
Reply with quote

Во-первых, Дмитрий - большое спасибо за Вашу работу, уже много лет я пользуюсь Вашими продуктами, они вне конкуренции.

Теперь по делу.
Господа, насколько я понимаю, HTML_FormPersister обрабатывает (как бы индексирует) все формы и их поля сначала при первоначальной загрузке страницы, а после сабмита работает с ними же. У меня же часть полей формы генерятся с помощью JavaScript.

В результате HTML_FormPersister не обрабатывает сгенерированную часть кода.

Отсюда 2 вопроса:
1. Видите ли вы быстрое решение моей проблемы средствами HTML_FormPersister, или с генеренными полями надо по старинке работать вручную?
2. Почему HTML_FormPersister перехватывает не ВСЁ содержимое _POST и _GET после сабмита? Если я всё правильно понимаю, то это решило бы такие ситуации как у меня.

С уважением.
Back to top
View user's profile Send private message
EVILdoer
Участник форума



Joined: 24 Oct 2005
Posts: 20
Карма: -8
   поощрить/наказать

Location: Сыктывкар

PostPosted: Fri Oct 28, 2005 7:28 am (спустя 1 день 13 часов 43 минуты; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

В статье про HTML_FormPersister есть один неверный листинг кода.
Скорей всего просто опечатка, извините что трачу целый пост на это))
Code (php): скопировать код в буфер обмена
<select name="choose">
<?foreach ($elements as $k=>$v) {?>
  <option value="<?=htmlspecialchars($k)">
    <?=$v>
  </option>
<?}?>
</select>
Надо хотя бы:
Code (php): скопировать код в буфер обмена
<select name="choose">
<?foreach ($elements as $k=>$v) {?>
  <option value="<?=htmlspecialchars($k)?>">
    <?=$v?>
  </option>
<?}?>
</select>
Ещё раз прошу извинений
за беспокойство. :)
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Oct 28, 2005 9:49 am (спустя 2 часа 20 минут; написано за 18 секунд)
   Post subject:
Reply with quote

EVILdoer
Простите, не вижу разницы
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Fri Oct 28, 2005 11:27 am (спустя 1 час 37 минут; написано за 53 секунды)
   Post subject:
Reply with quote

Maus
Внимательно посмотрите на вставку переменных - в одном месте отсутствует ?>, в другом - ?
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Oct 28, 2005 11:34 am (спустя 7 минут; написано за 21 секунду)
   Post subject:
Reply with quote

WingedFox
А, действительно. Спасибо.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Oct 28, 2005 12:30 pm (спустя 55 минут; написано за 5 секунд)
   Post subject:
Reply with quote

ExHealer wrote:
из-за отсутствия закрывающего тэга и наличия onchange сильно тормозит работу.
Пооптимизировал регулярные выражения. Собственно, все, что требовалось, - это заменить в нескольких местах (?:...) на (?>...), см. документацию на PCRE.
Новая версия HTML_SemiParser - 1.95. Попробуйте ее в своих проектах.
Код для тестирования скорости: dklab.ru/lib/HTML_FormPersister/demo/test/HTML_FormPersister/t_speed.php
EVILdoer wrote:
Скорей всего просто опечатка,
Да, опечатка. Исправил, спасибо.
Back to top
View user's profile Send private message Send e-mail
гость :)
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Nov 06, 2005 4:31 am (спустя 8 дней 16 часов 1 минуту; написано за 4 минуты 40 секунд)
   Post subject: багрепорт
Reply with quote

Во первых, хочу поблагодарить за библиотеку - очень и очень помогает..
нашёл баг (версия 1.93, последняя), точнее не совсем баг :)
понадобилось обработать форму где есть такая вот структура
<input type=radio name=group[] value=1>
<input type=radio name=group[] value=2>
<input type=radio name=group[] value=3>
<input type=radio name=group[] value=4>
ну и т.д. (понимаю что изврат, и не нужен здесь массив, но так надо -) )
FormPersister обрабатывал неправильно - не сохранял состояние этого радобаттона (точнее сохранял, но только одного - первого).

Покопался в коде, понял почему так происходит, поправить оказалось просто..
строка 129, было:
if ($attr['value'] == $this->getCurValue($attr)) $attr['checked'] = 'checked';
стало:
if ($attr['value'] == $this->getCurValue($attr,true)) $attr['checked'] = 'checked';

т.е. добавил true в вызов getCurValue. Вроде бы других багов это не создало, всё теперь работает как нужно..
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Nov 06, 2005 3:46 pm (спустя 11 часов 14 минут; написано за 42 секунды)
   Post subject:
Reply with quote

гость :) wrote:
понадобилось обработать форму где есть такая вот структура
Эта структура с логической точки зрения абсолютно некорректна.
"Так надо" - не верю. Изврат чистой воды. То, что это не создало других багов, далеко не факт.
Back to top
View user's profile Send private message Send e-mail
Гость :)
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Nov 06, 2005 8:22 pm (спустя 4 часа 35 минут; написано за 1 секунду)
   Post subject:
Reply with quote

Некоректна. Согласен. Дело в том что что один и тот же элемент управления может быть как чекбоксом, так и радоибаттоном и в скрипте обрабатывается одинаково. Можно конечно переименовать в group и поставить проверку в скрипте, но..
С другой стороны такая структура обрабатывается пхп без проблем (ему соббственно всё равно -) ), так почему formPersister её обрабатывает некорректно?
Однако если автор считает что так и должно быть то я поменяю свой скрипт :)
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Nov 06, 2005 10:00 pm (спустя 1 час 38 минут; написано за 2 минуты 18 секунд)
   Post subject:
Reply with quote

Параметр isBoolean у getCurValue нельзя использовать для radio-кнопок по той простой причине, что он влияет на псевдоатрибут default, который может быть у элемента. У checkbox-ов default-атрибут может быть только '', '0' (значение "выключено") или все остальное ("включено"). Для radio-кнопок же - default-атрибут совпадает с полем value ("включено") или не совпадает ("выключено").

Но, вообще-то, в чем-то Вы правы. Раз на странице есть элемент, то он должен сохранять свое значение, как бы он ни назывался. Так что, вероятно, в одной из следующих версиях поправлю.
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Mon Nov 07, 2005 1:29 pm (спустя 15 часов 28 минут; написано за 1 минуту 2 секунды)
   Post subject:
Reply with quote

Я что-то не понимаю, или... почему так?

dklab.ru/lib/HTML_FormPersister/demo/test/HTML_FormPersister/t_formpersister.php

убираем галку с чекбокса, для которого указан параметр default (один такой), отправляем форму и после загрузки чекбокс снова выбран.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Nov 08, 2005 12:24 pm (спустя 22 часа 55 минут; написано за 1 минуту 36 секунд)
   Post subject:
Reply with quote

Если взвести следующий за ним checkbox, тогда, кстати, default работает корректно.

Видимо, проблема в том, что библиотека не может определить: то ли данные впервые загружены (и тогда надо default учитывать), то ли - после нажатия на submit (и тогда default следует игнорировать). Я пока не вижу, как данный вопрос можно разрешить.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Nov 25, 2005 2:16 pm (спустя 17 дней 1 час 51 минуту; написано за 2 минуты 19 секунд)
   Post subject:
Reply with quote

v 1.97.
- Добавлены псевдоатрибуты _left и _right, чтобы можно было в обработчиках вставлять текст перед или после тэга.
- Исправлен баг с невозможностью распознавания атрибутов вида prefix:name="value".
- Можно определять препроцессоры и постпроцессоры всего текста в производных классах.
- Псевдоатрибут label у input-полей теперь не приводит к обрыву вызова цепочки обработчиков (добились этого за счет _left и _right).
- Метод _deepFetch сильно усовершенствован
Back to top
View user's profile Send private message Send e-mail
unreg
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Nov 30, 2005 1:29 am (спустя 4 дня 11 часов 13 минут; написано за 5 минут 32 секунды)
   Post subject:
Reply with quote

Спасибо за ваш труд! Библиотека действительно сильно помогает в рутинной работе.

При этом, возник вопрос.
Code (php): скопировать код в буфер обмена
ob_start (www.php.net/ob_start)();
include($var);
$var2 .= ob_get_contents (www.php.net/ob_get_contents)();
ob_end_clean (www.php.net/ob_end_clean)();
Переменная $var содержит файл, подлежащий обработке с помощью formpersister. При использовании подобной структуры непременно получаем неверную работу - formrersister просто не работает и выдаёт необработанную страницу.

Что может помочь в подобной ситуации?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Nov 30, 2005 11:39 am (спустя 10 часов 10 минут; написано за 15 секунд)
   Post subject:
Reply with quote

Понимание того, как работает FormPersister, а также чтение Как правильно задавать вопросы: статья, обязательная к прочтению (citforum.ru/howto/smart-questions-ru.shtml)
Back to top
View user's profile Send private message Send e-mail
Diver_guest
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Jan 29, 2006 11:23 am (спустя 1 месяц 28 дней 23 часа 43 минуты; написано за 2 минуты 50 секунд)
   Post subject:
Reply with quote

Здраствуйте. такой вопрос. есть вот такой вот файл.php
Code (php): скопировать код в буфер обмена
require_once 'HTML/FormPersister.php';
ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formpersisterhandler'""""""></br>
<input type="submit">
</form>
вопрос. мне надо обработать поля. к примеру проверить адрес емеил на соответсвие a@a.a (если соответствует то оставить как есть, а если нет то затереть его и вывести предупреждение).
собственно куда вставлять подобный код для обработки?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Jan 29, 2006 12:38 pm (спустя 1 час 15 минут; написано за 47 секунд)
   Post subject:
Reply with quote

HTML_FormPersister к этому вопросу отношения не имеет.
Вставлять код, очевидно, в любое место приведенного Вами файла.
Back to top
View user's profile Send private message Send e-mail
Shipko M.
Заглянувший



Joined: 02 Feb 2006
Posts: 1
Карма: 0
   поощрить/наказать

Location: г. Киев

PostPosted: Thu Feb 02, 2006 2:33 pm (спустя 4 дня 1 час 54 минуты; написано за 9 секунд)
   Post subject:
Reply with quote

В теге <form> можно не указывать атрибут action,
тогда берется базовый URL документа.

<form action="">

</form>
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 272
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Feb 03, 2006 11:48 am (спустя 21 час 14 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Shipko M. wrote:
В теге <form> можно не указывать атрибут action
В стандарте, кажется, сказано обратное:
www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#edef-FORM wrote:
<!ATTLIST FORM
  %attrs; -- %coreattrs, %i18n, %events --
  action %URI; #REQUIRED -- server-side form handler --
// выделено мной
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Feb 03, 2006 12:00 pm (спустя 12 минут; написано за 54 секунды)
   Post subject:
Reply with quote

1. Практика показала, что, если опуститьь action, то форма будет отправлена сама на себя, что крайне удобно.
2. В случае, если action отсутствует, FormPersister создает этот атрибут и прописывает там REQUEST_URI.
Back to top
View user's profile Send private message Send e-mail
creatop
Заглянувший



Joined: 05 Mar 2005
Posts: 7
Карма: 0
   поощрить/наказать

Location: Omsk

PostPosted: Fri Feb 24, 2006 4:01 pm (спустя 21 день 4 часа 1 минуту; написано за 4 минуты 4 секунды)
   Post subject:
Reply with quote

Можно поинтересоваться, почему обидели <select> в плане обработки аттрибута label??

При таком (xhtml.ru/2005/11/28/css-forms/) способе отображения форм, label прописывается для всех элементов формы (ну естественно кроме button, hidden и т.п.), и мне кажется это вполне удобным.

Стоит надеяться на добавление этого функционала в библиотеку автором, или же взяться за дописывание самому?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Feb 25, 2006 9:29 pm (спустя 1 день 5 часов 27 минут; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

О каком именно label-е идет речь?
Если о <input type="checkbox" label="abc">, то тут label задумывался как активная, кликабельная область для checkbox-а. Какой смысл делать label для select-ов, textarea и т.д.?
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sun Feb 26, 2006 6:48 am (спустя 9 часов 18 минут; написано за 4 минуты 51 секунду)
   Post subject:
Reply with quote

Ну если пройти по вышеупомянутой ссылке, то там наглядно демонстрируется этот способ верстки:
Code (html): скопировать код в буфер обмена
<form (december.com/html/4/element/form.html) method="post" id="testForm"> (december.com/html/4/element/.html)
 <fieldset> (december.com/html/4/element/fieldset.html)
 <legend> (december.com/html/4/element/legend.html)Это форма!</legend>
 <label (december.com/html/4/element/label.html) for="inp1"> (december.com/html/4/element/.html)Фамилия: <br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)</label>
  <input (december.com/html/4/element/input.html) id="inp1" name="name1" value="" /> (december.com/html/4/element/.html)<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
 <label (december.com/html/4/element/label.html) for="inp2"> (december.com/html/4/element/.html)Имя: <br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)</label>
  <input (december.com/html/4/element/input.html) id="inp2" name="name2" value="" /> (december.com/html/4/element/.html)<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
 <label (december.com/html/4/element/label.html) for="inp3"> (december.com/html/4/element/.html)E-mail: <br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)</label>
  <input (december.com/html/4/element/input.html) id="inp3" name="name3" value="" /> (december.com/html/4/element/.html)<br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
 <label (december.com/html/4/element/label.html) for="inp4"> (december.com/html/4/element/.html)Страна: <br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)</label>
  <select (december.com/html/4/element/select.html) id="inp4" name="name4"> (december.com/html/4/element/.html)
   <optgroup> (december.com/html/4/element/optgroup.html)
    <option (december.com/html/4/element/option.html) value=""> (december.com/html/4/element/.html)Россия</option>
    <option (december.com/html/4/element/option.html) value=""> (december.com/html/4/element/.html)Украина</option>
    <option (december.com/html/4/element/option.html) value=""> (december.com/html/4/element/.html)Беларусь</option>
   </optgroup>
  </select><br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
 <label (december.com/html/4/element/label.html) for="inp5"> (december.com/html/4/element/.html)Комментарий: <br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)</label>
  <textarea (december.com/html/4/element/textarea.html) id="inp5" name="name5"> (december.com/html/4/element/.html)</textarea><br (december.com/html/4/element/br.html) /> (december.com/html/4/element/.html)
  <input (december.com/html/4/element/input.html) type="submit" value="Отправить" class="noresize submit" /> (december.com/html/4/element/.html)
 </fieldset>
</form>
Да, действительно, здесь label прописывется для каждого элемента и несет более декоративную роль, нежели в случае с radiobutton или checkbox, но тем не менее такой способ очень удобен для верстки форм, и не противоречит стандартам HTML, насколько я понимаю.
К тому же по клику на label для <input type="text"> или <textarea> фокус переходит в поле ввода, что тоже можно считать небольшой фичей.
Back to top
creatop
Заглянувший



Joined: 05 Mar 2005
Posts: 7
Карма: 0
   поощрить/наказать

Location: Omsk

PostPosted: Sun Feb 26, 2006 7:47 am (спустя 59 минут; написано за 1 минуту 37 секунд)
   Post subject:
Reply with quote

Вот еще пример (jeremyboles.com/formtrick/) для чего можно использовать <label> в формах

З.Ы. предыдущее сообщение мое..
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 3 of 5    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML