2013-07-23 134 views
0

我有一個HTML文本框,用戶可以在其中輸入它需要的表單數量,並向用戶顯示該表單的數量。使用jquery刪除div

<label>No of Applicant</label><input type="text" class="form_input" id="applicant" value="1" onchange="addevent();"/></div> 

功能addevent()是:

function addevent(){ 
var x=document.getElementById('applicant').value; 

for(i=1;i<x;i++) 
{ 
    var ts=document.getElementById('holder'); 
    var newdiv = document.createElement('div'); 

    var p=i+1;   // Form 1 is default, must exist 
    if(p==1) 
    { 
     var no = p+' st'; 
    } 
    else if(p==2) 
    { 
     var no = p+' nd'; 
    } 
    else if(p==3) 
    { 
     var no = p+' rd'; 
    } 
    else 
    { 
     var no = p+' th'; 
    } 

     newdiv.innerHTML='<div class="form_row"><p>New Form number'+no+'</p></div>'; 
     ts.appendChild(newdiv); 
    } 


} 

而且上面的腳本工作很好。但是,如果用戶重新輸入他想要的表格,則表格的編號將被添加到以前的表格中。即如果以前他輸入了2個表單,那麼他重新輸入3個表單,表單總數現在是5個。所以我想知道有什麼方法可以刪除創建新div之前創建的div。

+1

這標記與jQuery,那麼爲什麼不使用它??? –

回答

1

刪除它之前追加

ts.find('.form_row').remove(); 
ts.appendChild(newdiv); 
1

這一修改將丟失和刪除冗餘的div:

function addevent() { 
    var x = parseInt(document.getElementById('applicant').value, 10); 
    if (x<1) { x=1; } 
    var ts = document.getElementById('holder'); 
    var divs = $(ts).children('.form_row'); 
    if (x < divs.length) { 
     divs.each(function (i) { 
      if (i >= x) { 
       $(this).remove(); 
      } 
     }); 
     return; 
    } 
    for (i = divs.length; i < x; i++) { 
     var newdiv = document.createElement('div'); 
     var p = i + 1; // Form 1 is default, must exist 
     /*if (p == 1) { 
      var no = p + ' st'; 
     } else*/ 
     if (p == 2) { 
      var no = p + ' nd'; 
     } else if (p == 3) { 
      var no = p + ' rd'; 
     } else { 
      var no = p + ' th'; 
     } 
     newdiv.className = 'form_row'; 
     newdiv.innerHTML = '<p>New Form number' + no + '</p>'; 
     ts.appendChild(newdiv); 
    } 
} 

http://jsfiddle.net/BqFEN/4/