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


Автор: SergeyMitrofanov 24.9.2010, 09:46
Дана форма
Заполним ее поля
Отправим данные с помощью POST
Нажмем на Reset
поля формы не очистились. :-(

Помогите, пожалуйста, советом:
какой написать код, чтобы нажав на Reset поля все-таки очистились?

Интересно это сделать без JavaScript, он часто пользователем отключен, хотелось бы только средствами PHP.

Код

<html>
  <head>
    <title>
      Очистка полей формы
    </title>
  </head>

  <body>
    <h2>
      Заполним поля, <br />
      нажмем на Submit,<br />
      потом на кнопку Reset. <p></p>
      Какой нужен код, чтобы поля очистились? <br />
    </h2>

    <?php
      // 24.09.10

      if (! isset ($_POST ['sent']))
      {
        $link = '';
        $comment = '';
      }
      else
      {
        $link = $_POST ['link'];
        $comment = $_POST ['comment'];
      }
    ?>

    <FORM
      action = '<?php echo $_SERVER ['PHP_SELF']; ?>'
      enctype = 'multipart/form-data'
      method = 'POST'
      name = 'myForm'
    >
      <INPUT
        type = 'hidden'
        name = 'sent'
        value = 1
      />

      <p>
        Link
      </p>
      <INPUT
        type = 'text'
        name = 'link'
        size = 50
        value = '<?php echo $link; ?>'
      />

      <p>
        Comment
      </p>
      <INPUT
        type = 'text'
        name = 'comment'
        size = 50
        value = '<?php echo $comment; ?>'
      />

      <INPUT
        type = 'submit'
        name = 'enter'
        value = 'Submit'
      />

      <INPUT
        type = 'reset'
        value = 'Reset'
      />

    </FORM>

  </body>
</html>

Автор: DeamonShan 24.9.2010, 09:54
SergeyMitrofanov, reset поля формы не очищает, reset возвращает значения по умолчанию (те что вы присвоили полям при загрузке)

Поэтомув полях 

Код

      <INPUT
        type = 'text'
        name = 'link'
        size = 50
        value = '<?php echo $link; ?>'
      />


надобы присваивать пустые значения, то есть value="", а у Вас в поля по умолчанию писваюиваются те значения, которые отправили POST-ом. Поэтому reset не может очистить поля...

Почитайте HTML. Не мне вам советовать, но об этом говориться в первых главах в книге для начинающих.

Автор: SergeyMitrofanov 24.9.2010, 10:14
DeamonShan,
спасибо за ответ!

    Получается так, что в таком случае мы бессильны... Никакой код на PHP не поможет, я зря его ищу?!

Автор: skyboy 24.9.2010, 10:28
Цитата(SergeyMitrofanov @  24.9.2010,  09:14 Найти цитируемый пост)
Никакой код на PHP не поможет, я зря его ищу?!

Цитата(DeamonShan @  24.9.2010,  08:54 Найти цитируемый пост)
надобы присваивать пустые значения, то есть value=""


Автор: SergeyMitrofanov 24.9.2010, 11:35
Цитата(DeamonShan @  24.9.2010,  08:54 Найти цитируемый пост)
надобы присваивать пустые значения, то есть value=""


  Так как в теге <input type = 'reset' нет аттрибута name = '...', то отследить на PHP нажатие на кнопку Reset нет никакой возможности... а хотелось бы переменные $link и $comment при нажатии на Reset очищать до пустого текста.

Автор: patap 24.9.2010, 12:15
как вариант
Код

<INPUT type="submit" value = 'Reset' name="reset" />  <!-- твоя reset кнопка -->


Код

if (! isset ($_POST ['sent']) || isset($_POST['reset']))
{
        $link = '';
        $comment = '';
      }
      else
      {
        $link = $_POST ['link'];
        $comment = $_POST ['comment'];
      }


а чем не устраивает яваскрипт?

Цитата
Интересно это сделать без JavaScript, он часто пользователем отключен

лично я имел таких юзеров)

Автор: DeamonShan 24.9.2010, 12:36
SergeyMitrofanov, мне интересно, почему вы значения полей передает обратно, если их потом хотите очистить? Или там фишка какая нить?

Автор: patap 24.9.2010, 12:45
DeamonShan,  скорее всего на сервере идет проверка данных, и если в полях неверная инфа, то сервер возвращает введенные ранее значения..

Автор: DeamonShan 24.9.2010, 13:14
patap, в таком случае разумнее оставить первоначальный код без изменений...так логичнее

Автор: SergeyMitrofanov 24.9.2010, 14:34
Цитата(DeamonShan @ 24.9.2010,  13:14)
patap, в таком случае разумнее оставить первоначальный код без изменений...так логичнее

Да, вот еще одно несовершенство HTML 4.0
нет аттрибута 'name = ...' у type = 'reset'

Короче, из всех форм удаляю кнопку Reset - от нее нет толку.
Жаль, что пока мы бессильны...

Я два дня ухлопал на поиск решения, чего только не делал, перебирал все поля, их аттрибуты, их имена,но как программно работать с кнопкой Reset так и не знаю, нет на нее управы :-(

Интересно, что будет в HTML 5?

Автор: Muerto 24.9.2010, 16:33
Мне понравилось как вы строите...

не как некоторые
Код

 <input type='text' name='bla' value='blabla2' size='4'/>


А красиво и более читаемо...
Код

 <input
   type='text' 
   name='bla' 
   value='blabla2'
   size='4'
  />


Хотя с другой стороны, дофига строк будет, что повлияет на размер файла... 

А по теме, так почему бы не написать javascript и запускать его, если кнопка ресет у вас почему то не пашет...

Автор: bars80080 24.9.2010, 18:51
Цитата(Muerto @  24.9.2010,  16:33 Найти цитируемый пост)
А по теме, так почему бы не написать javascript и запускать его, если кнопка ресет у вас почему то не пашет...

да всё у него работает. и ресет тоже. и ему уже объяснили почему кнопка ресет срабатывает именно так. чему, кстати, можно было догадаться, ведь она называется reset, а не clear. для тех, кто знаком с английским языком, это должно быть очевидно


Цитата(Muerto @  24.9.2010,  16:33 Найти цитируемый пост)
Хотя с другой стороны, дофига строк будет, что повлияет на размер файла... 

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

а читаемость, тут исключительно на свой вкус. я бы сказал наоборот: очень даже не читаемо

Автор: enoff 24.9.2010, 19:30
Цитата(patap @  24.9.2010,  13:15 Найти цитируемый пост)

лично я имел таких юзеров)

Цитата(addons.mozilla.org)

NoScript, 73 652 030 закачек

имхо, сайт должен работь и с отключенным js. JavaScript как дополнение использовать, ajax, всякие рюшечки и т.д.

Сейчас сижу за слабым компом и любой сайт может мне повесить браузер, а за ним на недолго и остальное.
А изобилие флеша вообще все наглухо у меня убивает=( ну это так, чисто мое недовольство smile 

 smile

Добавлено через 2 минуты и 20 секунд
bars80080, насчет очевидности названий можно поспорить... В том же php названия функций в разных стилях, порядок и наименование принимаемых параметров везде разные, хоть функции и выполняют схожие задачи.

Автор: bars80080 24.9.2010, 19:51
Цитата(enoff @  24.9.2010,  19:30 Найти цитируемый пост)
В том же php названия функций в разных стилях, порядок

стилистика и порядок не относятся к смысловой нагрузке.

наименования параметров разных не встречал. mixed haystack по-моему везде mixed haystack и означает одно

Цитата(enoff @  24.9.2010,  19:30 Найти цитируемый пост)
хоть функции и выполняют схожие задачи. 

это тоже не относится к смысловому понимаю, что делает функция


Автор: enoff 24.9.2010, 20:04
Я немного не в ту степь пошел, просто вспомнилась разрозненность наименований в php.
haystack, subject, string...
strpos, str_repeat... и т.д.

По мне, reset - не очевидно, что сбрасывается в значения по умолчанию, а не в пустые строки.

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