2013-07-23 78 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/