2013-07-23 4 views
0

У меня есть текстовое поле HTML, в котором пользователи будут вводить количество форм, которые требуются, и число пользователей будет показано пользователю.Удалить div с помощью jquery

<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. Поэтому я хочу знать, есть ли способ, чтобы я мог удалить divs, созданные до создания новых div.

+1

Это помечено с JQuery, так почему бы не использовать его ??? –

ответ

1

удалить его, прежде чем добавить

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

Эта модификация добавляет отсутствующие и удаляет избыточные дивы:

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/