Nasıl php form için bir sıfırlama düğmesini kullanabilirsiniz?

5 Cevap php

I've got a form that I'm handling with PHP. Before the user submits it, the Reset button works. But when they submit and the page reloads (I've made the form fields sticky based on the $_POST values) the reset doesn't work. How can I fix that? EDIT: For example, a checkbox on the form:

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

Ve 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>

EDIT: In the end, I just hid the button if the form has been submitted (but isn't complete). Maybe no one will notice.

5 Cevap

Ben sadece bu kesin bir şey yaşadım, benim previous question & the incredible helpful answers bkz.

Sonunda ben PHP değerleri manuel sıfırlama yapmak zorunda.

EDIT: Ben yaptım $ _POST yerine $ _SESSION dayalı form değerleri doldurma gibi görünüyor sizin için değil tamamen aynı senaryo. Bu durumda, yukarıda link yoluyla kabul cevaba bakınız.

Eğer gerçekten reset düğmesi ihtiyacınız var mı?

Ben hayatımda (yani kullanıcı anında ve geri dönüşümsüz o sadece girilen tüm verileri kaybetmek istiyorum nerede) ondan yararlanacak hiçbir şekilde görmedim.

Sıfırlama düğmesi kullanıcı tarafından yapılan formdaki değişiklikleri, undoes, varsayılan değerleri silmez. Tüm varsayılan değerleri silmek istiyorsanız, gibi bir şey yapmak için JavaScript kullanabilirsiniz:

<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;" />

...

Bir unset($_POST) ile sıfırlama olaya tepki olabilir.

Başka bir yazı zaten bu cevap:

PHP sadece bir ara ben ve JQuery gibi yeni bir dil dalmak için biraz tembel, ama aşağıdaki bir basit ve zarif bir çözüm değil mi?

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

İki sadece farklı amaçlarla gönderme düğmeleri yok neden bir sebep göremiyorum. Sonra sadece:

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

Sen sadece geri varsayılan olması gerekiyordu ne olursa olsun senin değerlerini yeniden tanımlamak.