2014-09-17 4 views
0

Я пытаюсь создать новые строки, когда установлен флажок checkbox. Я пробовал использовать .after() и .insertAfter() безрезультатно.Как добавить новую строку таблицы?

Может кто-нибудь указать мне в правильном направлении?

http://jsfiddle.net/uf0jhd9w/c

HTML:

<tr class="itemSize"> 
     <td> 
      <span class="danger">*</span><label for="itemSize">Product Sizes:</label> 
     </td> 
     <td> 
      <label for="extra_small">XS</label><input type="checkbox" name="extra_small" id="extra_small" value="XS"> 
      <label for="small">S</label><input type="checkbox" name="small" id="small" value="S"> 
      <label for="medium">M</label><input type="checkbox" name="medium" id="medium" value="M"> 
      <label for="large">L</label><input type="checkbox" name="large" id="large" value="L"> 
     </td> 
     </tr> 

JQuery:

$('#extra_small,#small,#medium, #large, #extra_large').on('change',function(){ 
    var $sizeTr = $('.itemSize'); 
    if(this.checked){ 
     console.log("checked"); 
     var size = $(this).attr("id"); 
     var html = 
     '<tr class="'+size+'_quantity">'+ 
     '<td>'+ 
      '<span class="danger">*</span><label for="itemQuantity">'+size+' Stock Quantity:</label>'+ 
     '</td>'+ 
     '<td>'+ 
      '<input type="number" min="1" name="itemQuantity" placeholder="Enter Product Quantity" value=""/>'+ 
     '</td>'+ 
     '</tr>'; 
     //$('.itemSize').after(html); 
     $(html).insertAfter($sizeTr); 
     //console.log($(html)); 
    }else{ 
     $('tr.'+size+'_quantity').hide(); 
    } 
    }); 
+1

работает для меня, как только у вас есть полный стол для работы с (то есть вас вычеркнуто '

...
' tags) http: // jsfiddle.net/j08691/uf0jhd9w/2/ – j08691

+0

Спасибо, я немного погубил и нашел свою ошибку. Мне пришлось принять var size = $ (this) .attr ("id"); из заявления if, и он начал работать для меня! – user875139

ответ

0

Убедитесь, что вы выбрали хороший элемент, когда вы добавляете свою строку (see answers from this link). Добавьте идентификатор в таблицу.

<table id="myTable"> 
    <thead> 
     <!-- Table headers --> 
    </thead> 
    <tbody> 
     <!-- Table contents --> 
    </tbody> 
</table> 

$('#myTable > tbody:last').append('<tr>...</tr><tr>...</tr>'); 
0

Чтобы добавить строку после последнего 'тра'

$("#table tr:last").after("<tr><td>cell</td></tr>"); 
1

Got вашего ответа.

Пожалуйста, обратитесь эту скрипку: http://jsfiddle.net/mayurRahul/frpnsnpv/

HTML:

<tr class="itemSize"> 
     <td> 
      <span class="danger">*</span><label class="itemSize">Product Sizes:</label> 
     </td> 
     <td> 
      <label for="extra_small">XS</label><input type="checkbox" name="extra_small" id="extra_small" value="XS"> 
      <label for="small">S</label><input type="checkbox" name="small" id="small" value="S"> 
      <label for="medium">M</label><input type="checkbox" name="medium" id="medium" value="M"> 
      <label for="large">L</label><input type="checkbox" name="large" id="large" value="L"> 
     </td> 
     </tr> 

JavaScript:

$('#extra_small,#small,#medium, #large, #extra_large').on('change',function(){ 
    var $sizeTr = $('.itemSize'); 
    if(this.checked){ 
     console.log("checked"); 
     var size = $(this).attr("id"); 
     var html = 
     '<tr class="'+size+'_quantity">'+ 
     '<td>'+ 
      '<span class="danger">*</span><label for="itemQuantity">'+size+' Stock Quantity:</label>'+ 
     '</td>'+ 
     '<td>'+ 
      '<input type="number" min="1" name="itemQuantity" placeholder="Enter Product Quantity" value=""/>'+ 
     '</td>'+ 
     '</tr>'; 
     //$('.itemSize').after(html); 
     $(html).insertAfter($sizeTr); 
     //console.log($(html)); 
    }else{ 
     $('tr.'+size+'_quantity').hide(); 
    } 
    }); 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – JasonMArcher

+0

спасибо :) Я позабочусь. – maddy

+0

Да, я видел это. Спасибо, что расширили свой ответ. – JasonMArcher

Смежные вопросы