Как я могу использовать кнопку сброса для php-формы?
Вопрос
У меня есть форма, которую я обрабатываю с помощью 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" />