2017-04-12 95 views
1

我目前正在製作一個帶有「+」按鈕的表單,該表單允許再次動態顯示相同的表單。當添加允許刪除表單的一部分的刪除按鈕時,它會刪除每次整個動態生成的表單,而不是僅僅對應於動態表單的計數器的「單擊」表單。Javascript - 從動態表格中刪除元素

<!-- Div that the content the dynamic form --> 
<div id="dynamicInput"> 

</div> 

<!-- Input button that active the script onClick --> 
<input type="button" class="add_delivery" value="Ajouter une destination" onClick="addInput('dynamicInput');">  

這是我的javascrip牛逼

var counter = 1; // Count the number of dynamic form generated 
var limit = 20; // Limit amount of dynamic form 

// Function to add the form 
function addInput(divName){ 

// Check if max limit is reached and display alert 
if (counter == limit) { 
     alert("You have reached the limit of adding " + counter + " inputs"); 
} 

// If limit max is not reached create the form element 
else { 
     var newdiv = document.createElement('div'); 
     newdiv.innerHTML = "<div class='delivery_booking_container_left_recipient'><a href='javascript:void(newdiv);' class='remove'>×</a><div class='recipient_name_title2'>Destinataire " + (counter + 1) + "</div><input type='text' name='recipient_name' id='recipient_name' class='delivery_field_recipient_name' placeholder=' Destinataire' value='<?php if(isset($recipient_name)) { echo $recipient_name; } ?>'><input type='text' name='recipient_phone' id='recipient_phone' class='delivery_field_recipient_phone' placeholder=' N° de téléphone' value='<?php if(isset($recipient_phone)) { echo $recipient_phone; } ?>'/></div><div id='ocationField2'><input id='autocomplete2' name='recipient_address' class='delivery_field_recipient_address' placeholder=' Adresse' onFocus='geolocate()'' type='text' value='<?php if(isset($recipient_address)) { echo $recipient_address; } ?>'/></div><div id='addresstwo'><input type='text' id='street_number2' name='street_number2' /><input type='text' id='route2' name='street_name2' /><input type='text' id='locality2' name='town_city2' /><input type='text' id='administrative_area_level_12' name='administrative_area_level_12' /><input type='text' id='postal_code2' name='postcode2' /><input type='text' id='country2' name='country2' /></div><textarea name='recipient_more_infos' id='recipient_more_infos' class='delivery_field_sender_more_infos' placeholder=' Informations complémentaires' value='<?php if(isset($recipient_more_infos)) { echo $recipient_more_infos; } ?>'></textarea>";      


// Function to remove a dynamic form on click using the <a href='javascript:void(newdiv);' class='remove'>×</a> 
$(document).on("click", "a.remove" , function() { 
document.getElementById(divName).appendChild(newdiv).remove(newdiv); 

// Reset the input to have the right count when adding a new on after deleting 
resetaddInput(newdiv); 
}); 

// Add ++ to the counter 
document.getElementById(divName).appendChild(newdiv); 
counter++; 
    } 
} 

+0

首先,你不能從JavaScript添加PHP代碼,並期望它被任何人解析。 PHP代碼是解析服務器端,您的JavaScript代碼完全是客戶端。 – evilpenguin

+0

我在這裏使用了PHP,因爲當將表單提交給服務器時,我在表單字段上做了一些檢查,如果發生錯誤,我會一直顯示用戶輸入的信息,並向他顯示他需要編輯的信息下一步。在這種情況下,它的工作原理是? :) –

+0

我會再說一遍:你的JavaScript代碼只在客戶端上運行,你的PHP代碼只能在服務器上運行。如果您在某個元素的innerHTML中輸出PHP代碼,則沒有人會解析它。 – evilpenguin

回答

1

您需要添加一些家長DIV/p元素作爲選擇,可以選擇整個新添加的形式像

<div class="fomesection"> 
<div class='delivery_booking_container_left_recipient'><a href='javascript:;' class='remove'>×</a>....</textarea> 
</div> 

使用,現在只要你點擊按鈕remove刪除父母的div它會正常工作..;或者如果你使用jQuery刪除它可以很容易地使用代碼是:

jQuery(document).on('click','.remove',function(){ 
    jQuery(this).parents('.fomesection').remove(); 
}); 
+0

嗨,謝謝!它只能刪除一個添加的表單。 我還有問題: 1 /生成多個表單(form1,form2,form3,...):我只能刪除form1,如果form2已經生成,刪除form2如果已經生成了form3,並且不能刪除最後生成的表單。 2 /生成一個表單(表單1):無法刪除表單1。 第一次生成的表單如何不能使用選擇器? –

+0

我使用'counter'使名稱動態。我可以在我的谷歌控制檯看到它需要櫃檯。 'class =「fomesection2」'出現在div和'href =「javascript:removeformdiv(fomesection2);」'爲刪除鏈接。 ('。fomesection''+ counter +'')。remove();()函數返回一個jQuery對象。 }); document.getElementById(divName).appendChild(newdiv); counter ++;' –