簡體   English   中英

提取動態創建的表單數據

[英]Extract dynamically created form data

我剛剛開始使用jQuery。 我一直在使用它的一件事是向表的一部分添加行。

當我添加新行時,我會給所有表單元素名稱,例如'name_' + rowNumber name 'name_' + rowNumber 每當我添加一行時,我都會增加rowNumber

我通常也有一個“刪除行”按鈕。 即使刪除了一行, rowNumber計數也保持不變,以免重復元素名稱。

提交表單后,我將一個隱藏元素設置為等於jQuery中的rowNumber值。 然后在PHP中,我從1到rowNumber值進行計數。 然后,對於每個值,我執行一個isset($_REQUEST['name'_ . index]) 這就是我提取在jQuery中刪除行后剩余的表單元素的方式。

這里有沒有人有更好的技術來處理已刪除的行?

對於某些較簡單的表,我們使用字段名,例如'name []',盡管對於JavaScript,它們將需要可用的ID。

它確實增加了一些復雜性,因為“ name [0]”必須假定“ detail [0]”是正確的元素。

如果字段名稱以[]結尾,PHP將創建一個數組並追加元素

<input name="field[]" value="first value" />
<input name="field[]" value="second value" />

// is roughly the same as

$_POST['field'][] = 'first value';
$_POST['field'][] = 'second value';

使用數組將值保留在提交中。 因此,在客戶端對行計數進行裝箱,然后將新元素name[] 這意味着$_POST['name']將是一個數組。

這樣,在服務器端,您可以通過以下方式輕松獲取行數(如果需要):

$rowcount = count($_POST['name']);

...並且您可以像這樣在服務器端循環瀏覽各行:

for ($i = 0; isset($_POST['name'][$i]; $i++) {}

您可以通過執行foreach($ _ POST as $ key => $ value)提取所有行。

添加動態表單元素時,請使用數組命名方法。 例如

<input type="text" name="textfield[]" />

發布表單后, textfield[]將是一個PHP數組,然后可以輕松使用它。 刪除元素時,請確保將其從HTML DOM中刪除。

您可以使用POST或GET

提交后,您可以自動將所有表單元素與此一起使用。 您不需要重新組織表單元素名稱。 即使您不需要知道表單元素的名稱。

<form method="POST" id="fr" name="fr">.....</form>

<?php
if(isset($_POST['fr'])){  
     foreach($_POST as $data){
          echo $data;
     }
}
?>

此外,您還應該查看此grafanimasyon.blogspot.com.tr/2015/02/veritabanndan-php-form-olusturucu.html

這是一個自動的表單創建者,負責計算數據庫表。 您可以看到如何為表單元素命名並使用它們。

就像blejzz建議的那樣,我認為如果您使用$ _GET,那么您可以循環瀏覽所有已發送的輸入,而忽略刪除的行。

foreach ($_GET as $k=>$v) {
      echo "KEY: ".$k."; VALUE: ".$v."<BR>";
}

我注意到您提到“對已刪除的行進行會計處理”; 您可以包含一個隱藏的輸入,並在每次有人刪除行時為其添加唯一值。 例如,輸入可以包含逗號分隔的行號值:

<input type="hidden" value="3,5,8" id="deletions" />

並包含在您的jQuery腳本中:

$('.delete').click(function(){
      var num = //whatever your method for getting the row number
      var v = $('#deletions').val();
      v = v.split(',');
      v.push(num);
      v = v.join(',');
      $('#deletions').val(v);
});

然后,您應該能夠知道刪除了哪些行(如果這是您要查找的內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM