2009-09-30 24 views

cevap

25

Hepinizin temizlemek istediğiniz varsayalım Çocuklar, sadece doğrudan çocukları değil, bu yüzden özyinelemelidir. Farklı giriş elemanları farklı şekilde temizlendikçe, türlerini kontrol etmelisiniz, böylece onlarla ne yapacağınızı bilmelisiniz.

clearChildren(document.getElementById('IdOfTheDiv')); 

Düzenleme::
unuttum seçeneğini ...

elemana bir referansla

function clearChildren(element) { 
    for (var i = 0; i < element.childNodes.length; i++) { 
     var e = element.childNodes[i]; 
     if (e.tagName) switch (e.tagName.toLowerCase()) { 
     case 'input': 
      switch (e.type) { 
       case "radio": 
       case "checkbox": e.checked = false; break; 
       case "button": 
       case "submit": 
       case "image": break; 
       default: e.value = ''; break; 
      } 
      break; 
     case 'select': e.selectedIndex = 0; break; 
     case 'textarea': e.innerHTML = ''; break; 
     default: clearChildren(e); 
     } 
    } 
} 

Çağrı it: Ben de textareas temizlemek, ancak değişmeden düğmeleri bırakmak istiyorum varsayalım

Düzenleme 2:
Bazı düzeltmeler: childNodes.length, tagName ve büyük tagName değerleri olmadan elemanları taşıma.

+1

+1, ben de bunu seviyorum – karim79

+1

Çocuk çocuklar üzerinde çalışmak için ona ihtiyaç hakkında iyi bir varsayım, ancak altta yatan düğümleri kapmak için yineleme gerekmez. –

+0

Cevabınız için teşekkür ederiz! Bunu uygulamaya çalışıyorum ve garip bir semptom var. Basit bir test formu üzerinde görünür bir etkisi yoktur. Eger print elemanina ulasirsam [object HTMLDivElement] alırsam (iyi ..) Eğer element.childNodes 'i basmak için alert() alırsam [object nodeLIst]' i (tekrar iyi) varsa, ama bende yankılanmak için alert() duyarsam() Ben() içinde asla ateş etmeyin, bu yüzden düğümlerin üzerinde yineleme yapmaz gibi görünüyor. Kod şöyle: function clearChildren (öğe) { için (var i = 0; i jerrygarciuh

4

Karim'in cevabı iyi çalışıyor.

$("#myDiv").each(function(){ 
    if($(this).type == "input") 
     $(this).val(''); 
}); 

Aslında düşünmek gelmek , ayrıca deneyebilirsiniz: jQuery kullanarak, ben böyle bir şey gidersiniz inanıyoruz

$("#myDiv input").val('');//myDiv is your Div name 
+0

değer girişi her türlü temizlemek için aşağıdaki kodu kullanın. JQuery'de yüklenecek çakışmalar yaratır mı? – jerrygarciuh

+0

Çatışmalardan kaçınmak için aşağıdakileri kullanabilirsiniz: jQuery.noConflict(); Sayfanızın başına gidin ve jQuery işlevini çağırırken jQuery kelimesiyle her '$' değiştirin. Daha fazla bilgi için: http://docs.jquery.com/Using_jQuery_with_Other_Libraries –

+0

Teşekkürler TTG! Buna şimdi bakacağım! 1 – jerrygarciuh

7

Ah oğlum, bu jQuery ile bir astar olacaktır:

function clearFields(container) { 
    var selects = container.getElementsByTagName('select'); 

    for(var i=0, len=selects.length; i < len; i++) { 
     selects[i].selectedIndex = -1; 
    } 

    var fields = container.getElementsByTagName('input'); 
    for(var i=0, len=fields.length; i < len; i++) { 
     var field = fields[i]; 
     switch(field.type) 
     { 
      case 'radio': 
      case 'checkbox': 
       field.checked = false; 
       break; 

      case 'text': 
      case 'password': 
      case 'hidden': 
       field.value = '' 
     } 
    } 

    var fields = container.getElementsByTagName('textarea'); 
    for(var i=0, len=fields.length; i < len; i++) { 
     fields[i].value = '' 
    } 
} 
: Eğer <select> alanlar, metin alanları, şifre alanları ve radyo/onay kutusu alanları dikkate almanız lazım jQuery olmadan

$(':input:not(:button)', div).val([]) 

JQuery ile

+0

+1, Bunu beğendim – karim79

+0

jQuery çözümü onay kutularını veya radyo düğmelerini kullanmıyor ve düğmelerin metnini temizliyor ... – Guffa

+0

@Guffa: jQuery çözümü şimdi düzgün çalışıyor;) –

14

Çok basit:

$('#myDiv').children().find('input,select').each(function(){ 
    $(this).val(''); 
}); 
Biz "Bul" in kadar etiket koyabilirsiniz

aramak.

+0

Teşekkürler Haresh! Bu iş parçacığına mükemmel bir ekleme! – jerrygarciuh

+0

güzel bir ... sadece çocuk() olmadan yapabilir misin merak ediyorum? örneğin: $ ('# myDiv') bulmak ('giriş, seçin') her (işlev) { $ (this) .val (''); }); – Vikram

2

Kudos, Haresh! Onay kutularının işaretini kaldırmak için küçük bir ek. (Tüm kontrol etmek gerçek kullanın.)

$('#myDiv').children().find('input,select').each(function(){ 

$(this).val(''); 
$(this).attr('checked',false); 

}); 
0
$('#div_id input[type=textbox], #div_id select, #div_id textarea').val(''); 
$('#div_id input[type=radio], #div_id input[type=checkbox]').prop('checked', false); 

jquery için.

1

form elemanları bu sayfada eşlenmeye bazı Scriptaculous etkilere sahip

function clear_form_elements(id_name) { 
    jQuery("#"+id_name).find(':input').each(function() { 
    switch(this.type) { 
     case 'password': 
     case 'text': 
     case 'textarea': 
     case 'file': 
     case 'select-one':  
      jQuery(this).val(''); 
      break; 
     case 'checkbox': 
     case 'radio': 
      this.checked = false; 
    } 
    }); 
} 
İlgili konular