修改输入值后如何复制表行并追加

时间:2019-04-11 22:44:49

标签: javascript jquery append

我正在尝试根据模式复选框的输入来复制表行修改输入并追加新行

我有一个项目类别表。如果我单击加号按钮,则会出现一个模态,其中带有一些颜色列表复选框。如果从复选框中选择某些颜色,则当前表行将复制并在上一行中添加具有相同颜色代码的新行。 下面是示例代码:jsFiddle

<div class="container">
  <table class="table table-border">
    <tr>
      <th>Main Category</th>
      <th>Item</th>
      <th>Color</th>
    </tr>
    <tr id="1">
      <td>Top</td>
      <td>T shirt -R</td>
      <td><input name="colorid[]" type="text" value="#FF0000" >  
          <a  href="#" class="btn btn-sm btn-success newcolor">+</a>
      </td>
   </tr>
  <tr id="2">
      <td>Top</td>
      <td>T shirt -W</td>
      <td><input name="colorid[]" type="text" value="#FFFFFF" >  
          <a  href="#" class="btn btn-sm btn-success newcolor">+</a>
      </td>
   </tr>
  </table>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="sizeLabel">
 <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header bg-primary">
                <!-- <button type="button" class="btn btn-danger btn-xs pull-right" data-dismiss="modal">Close</button> -->
                <h2 class="modal-title text-center" id="myModalLabel">Color List</h2>
            </div>

                <div class="modal-body">
                    <div class="control-group">

                        <div class="checkbox">
                            <label>
                                <input name="colorid[]" type="checkbox" value="#00AD43" class="ace checkbox-input-clr" >
                                <span class="lbl"> Green (#00AD43)</span>

                            </label>
                              <label>
                                <input name="colorid[]" type="checkbox" value="#00008B" class="ace checkbox-input-clr" >
                                <span class="lbl"> Blue (#00008B)</span>

                            </label>
                             <label>
                                <input name="colorid[]" type="checkbox" value="#FFFF00" class="ace checkbox-input-clr" >
                                <span class="lbl"> Yellow (#FFFF00)</span>

                            </label>
                        </div> 

                    </div>
                </div>
                <div class="modal-footer">
                    <div class="col-md-offset-3 col-md-9"> 
                        <button class="btn btn-info" type="button" id="modal_data" data-dismiss="modal">
                            <i class="ace-icon fa fa-check bigger-110" ></i> Done
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

    $('#myModal').on('hidden.bs.modal', function (e) {

       var trid=$(this).data("idvalue");
       var trcopy=$('#' + trid).html();
       var data='';
            $('.checkbox-input-clr').each(function(i, v){
                    if ($(this).is(":checked"))
                    {
                     data+='<tr>';
                     data+= trcopy ;
                     data+='</tr>';
                   }
                });
       $('#' + trid).after(data);
    })

我希望新行将在“颜色输入”字段中附加新的颜色代码,以作为模式检查框中的复选框。例如:如果我选中了蓝色和黄色,则新的两行将附加颜色代码#00008B和#FFFF00

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我有使用replace()方法。 首先,我复制上一个表行并放入trcopy变量。然后在trcopy中找到文本输入值,并用复选框输入值替换。

$('#myModal').on('hidden.bs.modal', function (e) {

   var trid=$(this).data("idvalue");
   var trcopy=$('#' + trid).html();
   var data='';
   var chk = [];
        $('.checkbox-input-clr').each(function(i){

                if ($(this).is(":checked"))
                {
                    var asd = $(trcopy).find("input:text").val();
                    chk[i] = $(this).val();                       
                    var newc = trcopy.replace(asd,chk[i]); 

                       data+='<tr>';
                       data+= newc;
                       data+='</tr>';
                }
            });

   $('#' + trid).after(data);
   $('.checkbox-input-clr').prop("checked", false);
})

这里是Working Demo