2014-10-29 48 views
3

我有一個動態添加行的表單。有用。填寫表單域並點擊提交按鈕「檢查正確性」後,將執行驗證。如果數據錯誤,它需要一個正確的。如果數據正確,我們爲生成的PDF文件提供一個新的提交按鈕「生成pdf」。數據驗證用戶輸入的數據應該仍然可見。它也適用於我的形式。在PHP和JavaScript中保存動態添加的行

問題是當我添加一些行。填寫完後點擊提交「檢查正確性」,新添加的行將隨其數據消失。有誰知道如何在驗證後保存這些行?

這是動態添加字段我的HTML代碼:

$oForm->formHTML('<div class="add_btn_block" style="margin-left:200px;"><div class="row_add_btn add_row">title</div></div>'); 
     $oForm->formHTML(addRows2()); 

    function addRows(){ 
     $personsArray = $_POST['persons']; 
     $html = ' 
     <table id="template2" style="display:none; "> 
      <tr id="row_{0}"> 
       <td><input type="text" name="persons[]"></td> 
       <td><img src="/../_img/row_del.png" id="delete_{0}" alt="usun"></td> 
      </tr> 
     </table> 
     <table id="list2"> 
      <thead > 
       <tr> 
        <th></th> 
        <th></th> 
       </tr> 
      </thead> 

      <tbody> 
       <tr> 
        <td><input type="text" name="persons[]" value="'.$personsArray[1].'"></td> 
        <td></td> 
       </tr> 

       <tr> 
        <td colspan="2" id="app_here2"></td> 
       </tr> 
      </tbody> 
     </table>'; 
      return $html; 
    } 

這是該JavaScript代碼。

<script> 
     $(document).ready(function(){ 
      var i = 2; 
      var rowTemplate2 = jQuery.format($("#template2").html()); 

      function addRow(){ 
       var ii = i++; 
       $("#app_here2").append(rowTemplate2(ii)); 
       $("#delete_" + ii).click(function(){ 
        $("#row_" + ii).remove(); 
       }); 
      } 
      $(".add_row").click(addRow); 
     }); 
</script> 

這是一些PHP:

if($_POST["ACT"] == NULL){ 
    $oForm->formInput(array(
     'type'=>'hidden', 
     'name'=>'ACT', 
    )); 

    $oForm->formInput(array(
     'id' =>'counter', 
     'type'=>'hidden', 
     'name'=>'counter', 
     'value'=>0)); 

    $oForm->formSubmit(array(
     'name' => 'sprawdzPoprawnosc', 
     'value' => 'check correctness' 
    )); 
} 

有一些畫面:

其單列

2.It的加入兩行後。我想以後頁面清爽仍然有形式是這樣的(3行數據到其): enter image description here

3.It的是什麼樣子,現在,頁面刷新後: enter image description here

你能幫助我嗎?

+3

假設您正在對服務器進行全面的往返並返回表單,例如完全重建頁面,那麼當時頁面重建也必須包含任何添加的行。否則你只會回到你開始的地方。 – 2014-10-29 14:19:15

+1

你好。社區已經討論過「我們應該在標題中使用自制標籤設備」這個問題,並且已經決定我們不應該(如果你感興趣的話,這是在_Meta_上)。如果您可以避免以這種方式撰寫標題,這有助於減少進一步的編輯工作 - 謝謝。 – halfer 2014-10-29 14:19:55

+0

你說得對@Marc B,但我該怎麼做?我應該做一個循環來保存數據,但我不知道如何去做。 – 2014-10-29 14:24:58

回答

0

我同意Marc B.您將不得不將表單中的更改存儲到服務器返回頁面之前。一種選擇是將其存儲在臨時文件或數據庫中。我認爲這會起作用,但可能是矯枉過正。我會嘗試將它存儲在$ _SESSION變量中,所以當服務器發送新表單時,它可以從特定的$ _SESSION變量(如果存在)中獲取它。

相關問題