2013-03-20 93 views
0

我希望在其名稱中添加已編號的輸入(已成功完成),但如果爲空(無法),也可以通過單擊按鈕將其刪除。使用此代碼,所有搜索類別的輸入都將被刪除。我只想要空的部分被刪除。這裏是我的嘗試:單獨刪除輸入

<script type="text/javascript"> 
// contains the counter for elements added 
window.__buttonClickCounter = 1; 

// Keep reference to container 
var c = document.getElementById('inputs'); 

// Click handler that appends to the contents of the container 
var clickhandler = function() { 
    c.innerHTML = c.innerHTML + "<input class='search' style='margin-bottom:4px;' type='search'   name='word" + window.__buttonClickCounter + "'/>"; 
    window.__buttonClickCounter++; 

    $('#removebtn').click(function() { 
     $('.search').remove(); 
    }); 
} 
</script> 

謝謝!

+0

你使用jQuery? – 2013-03-20 06:26:31

+0

當removebtn被點擊時你將如何知道哪些輸入已被刪除 – 2013-03-20 06:27:11

回答

0

您可以使用jQuery如下寫

$(function(){ 
    var counter = 0; 
    $('#addbtn').click(function(){ 
     $('#inputs').append('<input class="search" style="margin-bottom:4px;" type="search"   name="' + counter++ + '"/>') 
    }); 

    $('#removebtn').click(function(){ 
     $('.search').each(function(){ 
      var $this = $(this); 
      if(!$this.val()){ 
       $this.remove() 
      } 
     });  
    }); 
}) 

演示:Fiddle

+0

like,mega thanks – 2013-03-20 20:21:50

0

您可以調用.remove()這樣的(因此只取出空之前過濾掉從jQuery對象非空的的):

$('#removebtn').click(function() { 
    $('.search').filter(function() {return !this.value}).remove(); 
}); 

如果.filter()回調返回true,則該項目被保留。如果返回false,則從結果jQuery對象中刪除該值。因此,這開始於所有對象,然後只保留其中!this.valuetrue這意味着它保持其中this.value是虛假的(例如空的),因此只有空對象調用.remove()


或者多一點的可重用的方式:

// Reusable jQuery method for filtering out non-empty input values 
// Also filters out items that don't have a `.value` property 
$.fn.filterNonEmpty = function() { 
    return this.filter((function() {return !this.value}); 
}; 

// now use this new jQuery method 
$('#removebtn').click(function() { 
    $('.search').filterNonEmpty().remove(); 
});