[英]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.