2012-05-15 14 views
24

içindeki javascript kodu yazma konusunda: Ben aynı dosyada bazı görev yapmak istiyorumi Gönder düğmesini tıklayarak üzerinde, bir form var php

  1. (db görev) VE
  2. istediğim form verileri yeniden yönlendirme burada

ile test.php gönderilmek üzere benim kod fo sunabileceğini

<?php 
    if(isset($_POST['btn'])){ 
     //do some task 
    ?> 
    <script type="text/javascript"> 
     var e = document.getElementById('testForm'); e.action='test.php'; e.submit();</script> 
    <?php 
    } 
    ?> 
<form name="testForm" id="testForm" method="POST" > 
    <input type="submit" name="btn" value="submit" autofocus onclick="return true;"/> 
</form> 

ama değil rm, onClick'te javascript kodunu çağırırsam, işte bu kodda sorun olur. Bu

+2

Oldukça mantıklı, javascript tarayıcınızda çıktığı anda çalışır ve bundan sonra formunuz yazdırılır. Kodunuzu bir window.onload olayı dinleyicisine dahil etmelisiniz, böylece yalnızca sayfa yükleme tamamlandıktan sonra yürütülür. – yent

cevap

45

Sadece içinde javascript dışarı yankı IF_FUNCTION

<form name="testForm" id="testForm" method="POST" > 
    <input type="submit" name="btn" value="submit" autofocus onclick="return true;"/> 
</form> 
<?php 
    if(isset($_POST['btn'])){ 
     echo " 
      <script type=\"text/javascript\"> 
      var e = document.getElementById('testForm'); e.action='test.php'; e.submit(); 
      </script> 
     "; 
    } 
    ?> 
+1

Lütfen buradaki çözümün PHP ile JavaScript kodunu oluşturduğuna dikkat edin, ancak PHP bloğunun form etiketlerinden sonra, JavaScript çalıştırıldığında DOM elemanının 'testForm' olduğu anlamına gelir. – chiborg

4
için bir çalışma var mı

Betiğin yürütülmesi sırasında, DOM şu an için mevcut değil tam dolu değil. En kolay çözüm, formdan sonra komut satırını koymak olabilir.

Başka bir çözüm, window.onload olayını yakalamak veya jQuery library'u kullanmaktır (yalnızca bu bir JavaScript'iniz varsa, fazlalık).

5

Böyle tüm JS koyabilirsiniz, böylece HTML

$(document).ready(function() { 
    // some code here 
}); 

bu hatırla hazır hale gelmesi yürütmüyor jQuery bu yüzden baş bölümüne dahil. Ayrıca bkz. Why you should use jQuery and not onload

İlgili konular