2012-07-06 55 views
0

我在這裏有兩種形式,第一種是選擇下拉選擇,當發佈時生成另一種形式,根據所選號碼創建一個數量輸入框。第二種形式然後將來自輸入框的數據放入2個數組中。所有這一切都很完美,但我試圖在第二個表單上的提交按鈕添加額外的功能。我創建了一個函數'showcontet()'來顯示和隱藏ID爲'table'的div中的內容。當在窗體外部的按鈕上使用時,這是完美的。當在表單內的提交按鈕上使用時,您可以看到內容約1秒鐘,然後再次消失。表單只提交運行Javascript功能一秒

<head> 
     <script type="text/javascript"> 
      showcontent = function(){ 
       var content = document.getElementById('tabl'); 
       content.style.display = 'inline'; 
      } 

     </script> 
     <?php 
    $userkey = array(); 
    $userval = array(); 
    $usernum = $_POST['usernum']; 
    $total = 0; 
    ?> 


     <form action='MYPIE.PHP' method='POST'> 
       HOW MANY SECTIONS? 
        <select name="usernum" value="<?php echo $usernum;?>"> 
          <option>1</option> 
          <option>2</option> 
          <option>3</option> 
          <option>4</option> 
          <option>5</option> 
          <option>6</option> 
          <option>7</option> 
          <option>8</option> 
          <option>9</option> 
        </select> 
       <input type="submit" name="submitnum" value="submit selection" /> 
     </form> 


    <form action='MYPIE.PHP' method='POST'>  
     <?php 
      for ($i=1; $i<$usernum+1; $i++){ 
       echo '<input type="hidden" value="' .$usernum.'" name="usernum" />'; 
       echo "<br>insert key: <input name='key".$i."' value='".$userkey[$i]."'> insert value: <input name='val".$i."' >"; 

      $userkey[$i] = $_POST["key".$i]; 
      $userval[$i] = $_POST["val".$i]; 
      } 

     ?> 
     </br> 
     <input type="submit" value="submit" name="submit keys" onclick="showcontent()" /> 
    </form> 

    </table> 


    <div id="tabl" style="display:none;"> 
    content 
    </div>  

道歉壞壓痕,我很新的這&感謝您的幫助

+0

對不起,如果解釋沒有意義。我不想阻止表單提交,我試圖讓它提交數據並同時運行showcontent() – Kza 2012-07-06 12:50:49

+0

如果您提交表單,它將發送一個服務器請求,所以頁面MYPIE.PHP將會加載。如果你想運行showcontent()來改變一些div內容並提交表單,你應該使用ajax。 – Angel 2012-07-06 13:00:09

回答

0

讓你的第二個按鈕,而不是「提交」按鈕,但一個普通的「按鈕」 否則將觸發提交表單的...

設置「showcontent()」函數在形式 '的onsubmit' 事件,讓該函數返回FALSE:

onsubmit="return showcontent()" 

function showcontent(){ 
    var content = document.getElementById('tabl'); 
    content.style.display = 'inline'; 

    $.ajax({ 
     type: "POST", 
     url: "MYPIE.PHP", 
     data: { usernum: $("select[name='usernum'] option:selected").val() } 
     }).done(function() { 
      alert('data posted'); 
    }); 

    return false; 
} 
+0

謝謝!我嘗試了提交,但它沒有做任何事情,改變了onclick,一切工作完美謝謝! – Kza 2012-07-06 12:45:45

+0

有點早熟。這將完全停止表單提交,我需要它提交表單數據並運行showcontent() – Kza 2012-07-06 12:48:16

+0

那麼如果您真的想發佈表單並向服務器發出新請求,那麼顯示div的用法是什麼? 刪除'返回false';應該足夠,然後... – 2012-07-06 12:50:42

2

您需要return false從事件處理程序,以防止瀏覽器提交表單和加載頁面。

+0

如果使用e.preventDefault(),可能會更好。 http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ – 2012-07-06 12:32:07