Как я могу использовать кнопку сброса для php-формы?

StackOverflow https://stackoverflow.com/questions/711324

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть форма, которую я обрабатываю с помощью PHP.Прежде чем пользователь отправит его, срабатывает кнопка Сброса.Но когда они отправляют и страница перезагружается (я сделал поля формы липкими на основе значений $ _POST), сброс не работает.Как я могу это исправить?Редактировать:Например, флажок в форме:

 <input type="checkbox"  <?php if (isset($_POST['cb12'])){echo 'checked="checked"';} ?> name="cb12" tabindex="34" id=cb value="Education">

И HTML -код:

<tr>
          <td colspan="5" valign="top" class="addit" ><div class="sectionbreak topsp" >
              <input type="hidden" name="failure" value="failure.html" >
              <p>
                <input type="submit" name="Submit" value="Submit" tabindex="49">
                Sends your application by email to The Boggs</p>
              <p>
                <input type="reset" name="Reset" value="Reset" tabindex="50">
                Clears all the fields</p>
            </div></td>
        </tr>

Редактировать:В конце концов, я просто спрятал кнопку, если форма была отправлена (но не заполнена).Может быть, никто и не заметит.

Это было полезно?

Решение

Я только что прошел через это в точности, видишь мой предыдущий вопрос и невероятно полезные ответы.

В конце концов мне пришлось выполнить ручной сброс значений в PHP.

Редактировать:Не совсем тот же сценарий для вас, поскольку вы, похоже, заполняете значения формы на основе $ _POST, а не $ _SESSION, как это делал я.В этом случае смотрите ответ, который я принял по ссылке выше.

Другие советы

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

<script type="text/javascript">
   function resetForm(myFormId)
   {
       var myForm = document.getElementById(myFormId);

       for (var i = 0; i < myForm.elements.length; i++)
       {
           if ('submit' != myForm.elements[i].type && 'reset' != myForm.elements[i].type)
           {
               myForm.elements[i].checked = false;
               myForm.elements[i].value = '';
               myForm.elements[i].selectedIndex = 0;
           }
       }
   }
</script>

...

<form id="myFormId" ...>

<input name="reset" type="reset" onclick="resetForm('myFormId'); return false;" />

...

Вы могли бы отреагировать на событие сброса с помощью unset($_POST).

Ответил на это уже в другом посте:

Я всего лишь промежуточный специалист в PHP и немного ленив, чтобы погружаться в новый язык, такой как jQuery, но разве следующее не простое и элегантное решение?

<input name="Submit1" type="submit" value="Get free quote" />
<input name="submitreset" type="submit" value="Reset" />

Не вижу причины, почему бы не иметь две кнопки отправки, просто с разными целями.Тогда просто:

if ($_POST['submitreset']=="Reset") {
$_source = "--Choose language from--";
$_target = "--Choose language to--"; }

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

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

<input type="reset" value="Reset" name="reset" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top