2016-04-06 12 views
0

Kullanıcının bir vardiya bilgisi girmesine izin veren bir formum var (aşağıdaki ekran görüntüsü).
enter image description here Tablonun değerini tutmak için bir dizi oluşturdum. Kullanıcı tıklamaDüğme üzerindeki dizi öğeleri kaldırıldı

$(function() { 
    var TechnicianItems = []; 

    $('#TechnicianAdd').click(function() { 
     var isValidItem = true; 

     if (isValidItem) { 
      var $technicianId = parseInt($('#TechnicianId').val().trim()); 
      var $technicianText = $('#TechnicianId').children("option").filter(":selected").text().trim(); 
      var $shiftId = parseInt($('#ShiftId').val().trim()); 
      var $shiftText = $('#ShiftId').children("option").filter(":selected").text().trim(); 
      var $duration = parseFloat($('#TechnicianDuration').val().trim()); 
      var $break = parseFloat($('#TechnicianBreak').val().trim()); 
      var $comment = $('#TechnicianComment').val().trim(); 

      TechnicianItems.push({ 
       TechnicianId: $technicianId, 
       ShiftId: $shiftId, 
       Duration: $duration, 
       Break: $break, 
       Comment: $comment 
      }); 

      // Clear the fields after insert. 
      $('#TechnicianId').val(''); 
      $('#ShiftId').val(''); 
      $('#TechnicianDuration').val(''); 
      $('#TechnicianBreak').val(''); 
      $('#TechnicianComment').val(''); 

      // Append the newly added entry to #partlogs table. 
      $table = $('#shiftlogs>tbody').last(); 
      $row = $('<tr/>'); 
      $row.append($('<td/>').html($technicianText)); 
      $row.append($('<td/>').html($shiftText)); 
      $row.append($('<td/>').html($duration)); 
      $row.append($('<td/>').html($break)); 
      $row.append($('<td/>').html($comment)); 
      $row.append($('<td/>').html('<input type="button" class="remove" value="Remove" />')); 
      $table.append($row); 

     } //END if(isValidItem) 
    }); // END $('#TechnicianAdd').click() 
}); 

'Ekle' zaman değer düğmesi tıklandığında 'Kaldır' olduğunu nasıl TehcnicianItems öğeyi kaldırırım diziye eklenir? Satırı çıkarmaya çalışıyorum ama işe yaramıyor.

$('.remove').click(function() { 
    $(this).closest('tr').remove(); 
}) 
+1

[Etkinlik dinamik olarak oluşturulan unsurları üzerinde bağlayıcı?] Olası yinelenen (http://stackoverflow.com/questions/203198/event-binding-on-dynamically -Created-elements) – dave

cevap

1

İşte gereksinimlerinize benzer bir örnek. Davanızdaki .remove numaralı tıklama etkinlik dinleyicisi, etkinlik listeleyicisinin eklenmesi sırasında öğeler DOM'de mevcut olmadığı için çalışmaz. Yani belge üzerinde bir dinleyici ekleyerek

function add() { 
 

 
    var str = '<tr><td>' + $('#usrInp').val() + '</td><td> <button class="remove">Remove</button></td></tr>' 
 
    $('table').append(str); 
 
    $('#usrInp').val(""); 
 
} 
 
$(document).on('click', '.remove', function() { 
 
    $(this).closest('tr').remove(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<table> 
 
    <tr> 
 
    <td> 
 
     <input type=text id="usrInp"> 
 
    </td> 
 
    <td> 
 
     <button onclick="add()">Add</button> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td>Row 1</td> 
 
    <td> 
 
     <button class="remove">Remove</button> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td>Row 2</td> 
 
    <td> 
 
     <button class="remove">Remove</button> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td>Row 3</td> 
 
    <td> 
 
     <button class="remove">Remove</button> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td>Row 4</td> 
 
    <td> 
 
     <button class="remove">Remove</button> 
 
    </td> 
 
    </tr> 
 
</table>

+0

Teşekkür ederim, satırı silemiyorum. Fakat onu ilgili TechnicianItems dizisinden nasıl kaldırabilirim? 'Oluştur' düğmesine tıkladığımda, hala sadece 1 yerine 2 satır oluşturuyor. – Eric

+0

Öğeyi Array'dan silmek için, silinen öğenin dizinini bir şekilde bulacaksınız, veri-indeksi özelliğini tr'e kaydedebilirsiniz. öğeyi seçin ve bu özniteliği okuyun ve sonra öğeyi kaldırmak için splice() yöntemini kullanın. Birden fazla satır oluşturma ile ilgili olarak, "TechnicianAdd" –

+0

kimliğine sahip olan öğenin bana ait olduğunu lütfen söyleyebilirsiniz. Kimlik, insert üzerinde oluşturulacak. Bu sipariş ve sipariş detay formuna benzer bir ebeveyn çocuk ilişkisi. Gönder düğmesine bastıktan sonra her şey eklenir. Kullanabileceğim kimlik yok. – Eric