【问题标题】:How to add days based on input value in each rows of the dynamic table using javascript如何使用javascript根据动态表每一行中的输入值添加天数
【发布时间】:2018-11-29 17:06:48
【问题描述】:

我的问题是,我必须根据文本框中给定的输入为动态表的所有行添加天数。 我已经为 2 行添加了天数,但 3,4... 行显示了 2 行的值。 现在我想在第三行添加天数,然后继续…………

       <script type="text/javascript">
    $(function(){

        $("body").on("focusout",function(){

            var trLength=$('body #appendRows tr').length;
            for (var i = 1; i <trLength; i++) {
                $('#appendRows tr:nth-child(2)').remove();
            }


            var val  = $(".ND").val();
             var m  =  $("#follow_Date").val();



                    var j = $("#Amount").val();
                    var k = document.getElementById('txtDate').value;
                    var date = new Date(k);
                    var newdate = new Date(date);
                    newdate.setDate(newdate.getDate() +
                        parseInt(m));

                    var dd = newdate.getDate();
                    var mm = newdate.getMonth() + 1;
                var y = newdate.getFullYear();
                 var someFormattedDate = mm+ '/' + dd + '/' + y;

            var i=1;
            for(i==1;i<val;i++){
                var html = $("#appendRows tr:first-child").clone();
                html.find("input").val("");
                html.find('input[name^="Sno"]').val(i+1);
              html.find('input[name^="Date"]').val(someFormattedDate + parseInt(m));
                 html.find('input[name^="Amount"]').val(j);
                 console.log(date, i, someFormattedDate)
                $('#appendRows').append(html);
            }
        });
    })
</script>

这是一个用于创建表格的javascript代码......................

这是我的动态表格,它将根据文本字段中的输入值创建...

<table class='table table-hover table-bordered table-striped table-xxs' id="cartGrid">
                            <thead>
                                <tr>

                                    <th>Sno</th>
                                    <th >Date</th>
                                    <th >Amount</th>
                                    <th >Bank Name</th>
                                    <th >Chqamt</th>
                                    <th >Payable</th>
                                    <th>Bank1</th>
                                    <th >Chqamt1</th>
                                    <th >Payable1</th>
                                </tr>
                                </thead>
                                <tbody id="appendRows">
                                <tr>

                                <td ><input style="width:40px" type="text" class="form-control" name="Sno[]" value="1" id="Sno"></td>

                                <td><input style="width:80px" type="text" class="form-control" name="Date[]" value="" id="Date"></td>

                                <td> <input style="width:70px" type="text" class="form-control" name="Amount[]" value="" id="Amount"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Bankname[]" id="Bankname"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Chqamt[]" id="Chqamt"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Payable[]" id="Payable"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Bank1[]" id="Bank1"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Chqamt1[]" id="Chqamt1"></td>

                                <td ><input style="width:80px" type="text" class="form-control" name="Payable1[]" id="Payable1"></td>



                                </tr>
                            </tbody>
                        </table>

这是表格代码........

    <label class="col-lg-1 control-label" id="pd">Due Start:</label>
                                <div class="col-lg-3">
                                    <div class="row">
                                    <div class="col-lg-4">
                                            <input type="text" class="form-control input-xs datepicker-dates Dues" placeholder="Due Start Date&hellip;" id="txtDate" name="TDDate" value="">
                                        </div>

                                    </div>
                                </div>

</div>

                        </div>
                        </fieldset>
                        <div class="col-md-2">
                            <div class="form-group">
                                <fieldset>
                                <label class="col-lg-1 control-label" id="pd">Mode:</label>
                                <div class="col-lg-3">
                                    <div class="row">
                                    <div class="col-lg-4">
                                            <input type="number" id="follow_Date" placeholder="Mode" name="TMode" class="form-control input-xs Mode">
                                        </div>

                                    </div>
                                </div>

</div>

这是由于启动和模式文本框代码............

【问题讨论】:

  • 您想为全年动态创建 30 行,对吗?无法理解这个问题,请您添加项目的 html 部分,以便我可以重现您的代码
  • 试试这个..date=date.getTime()+30*24*60*60*1000; var newDate = 新日期(日期);
  • 不,先生,根据输入值创建的行(即,如果我在文本框中给出 3,则自动创建 3 行,这现在不是问题)我的问题是,请参阅我附加的图片“日期”列的第一行显示文本框值,它在第二行添加 30 天,第三行和第四行不添加 30 天.....现有值正在显示
  • @line88 我添加了第二张图片
  • “到期开始”日期显示在第一行,第二行值加 30,3,4 行不加 30

标签: javascript php codeigniter


【解决方案1】:

更新

$(function(){
  $('#txtDate, #follow_Date, .ND').keyup( function () {

    // Clear rows
    var trLength = $('body #appendRows tr').length;
    for (var i = 1; i <trLength; i++) {
      $('#appendRows tr:nth-child(2)').remove();
    }

    var val = (!$(".ND").val()) ? 1 : val = $(".ND").val();
    var m  =  $("#follow_Date").val();
    var j = $("#Amount").val();
    var k = document.getElementById('txtDate').value;
    var currentDate = moment(k); 
    
    for (var i = 0, len = val; i < val; ++i) {
      var newdate = currentDate.add(parseInt(m), 'days');
      var html = $("#appendRows tr:first-child").clone();
      html.find("input").val("");
      html.find('input[name^="Sno"]').val(i+1);
      html.find('input[name^="Amount"]').val(j);
      // I format this to make it clear
      html.find('input[name^="Date"]')
          .val(newdate.format('YYYY/MM/DD'));
      $('#appendRows').append(html);
    }
    
    // Remove that first row
    $("#appendRows tr:first-child").remove();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://rawgit.com/moment/moment/2.2.1/min/moment.min.js"></script>
<div>
<label class="col-lg-1 control-label" id="pd">Due Start:</label>
<div class="col-lg-3">
<div class="row">
<div class="col-lg-4">
<input type="text" class="form-control input-xs datepicker-dates Dues" placeholder="Due Start Date&hellip;" id="txtDate" name="TDDate" value="2018/12/12">
</div>
</div>
</div>
</div>

<div class="col-md-2">
<div class="form-group">
<fieldset>
<label class="col-lg-1 control-label" id="pd">Mode:</label>
<div class="col-lg-3">
<div class="row">
<div class="col-lg-4">
<input type="number" id="follow_Date" placeholder="Mode" name="TMode" class="form-control input-xs Mode" value="30">
</div>
</div>
</div>

<label class="col-lg-1 control-label" id="pd">Rows:</label>
<div class="col-lg-3">
<div class="row">
<div class="col-lg-4">
<input type="number" class="ND" placeholder="Number of rows" name="TMode" class="form-control input-xs Mode" value="10">
</div>
</div>
</div>

</fieldset>
</div>
</div>

<table class='table table-hover table-bordered table-striped table-xxs' id="cartGrid">
<thead>
<tr>

<th>Sno</th>
<th >Date</th>
<th >Amount</th>
<th >Bank Name</th>
<th >Chqamt</th>
<th >Payable</th>
<th>Bank1</th>
<th >Chqamt1</th>
<th >Payable1</th>
</tr>
</thead>
<tbody id="appendRows">
<tr>

<td ><input style="width:40px" type="text" class="form-control" name="Sno[]" value="1" id="Sno"></td>

<td><input style="width:80px" type="text" class="form-control" name="Date[]" value="" id="Date"></td>

<td> <input style="width:70px" type="text" class="form-control" name="Amount[]" value="" id="Amount"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Bankname[]" id="Bankname"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Chqamt[]" id="Chqamt"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Payable[]" id="Payable"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Bank1[]" id="Bank1"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Chqamt1[]" id="Chqamt1"></td>

<td ><input style="width:80px" type="text" class="form-control" name="Payable1[]" id="Payable1"></td>



</tr>
</tbody>
</table>

【讨论】:

  • 谢谢@parndepu先生,但我已经编辑了问题。请帮我解决这个问题
  • 希望对您有所帮助。祝你好运。
  • 已更新。请检查一下。谢谢
  • 先生第一行是空的
  • 我也出现了同样的问题
【解决方案2】:

基于 cmets,当您在 Mode 输入中输入数字时,使用 Mode 输入上的 keyup 事件添加行...并且只需在第一次出现的日期上添加 0 天

function add() {
  var val = $(".Mode").val();
  var currentdate = document.getElementById('txtDate').value;
  currentdate = getDueDate(currentdate, 0);
  
  $("#appendRows tr").not('.master-row').remove(); // remove previous rows (reset the table)

  for (var i = 0; i < val; i++) {
    
    var someFormattedDate = formatDate(currentdate);
    var html = $("#appendRows tr:first-child").clone();
    html.find("input").val("");
    html.find('input[name^="Sno"]').val(i + 1);
    html.find('input[name^="Date"]').val(someFormattedDate);
    html.removeClass('master-row');
    $('#appendRows').append(html);
    currentdate = getDueDate(currentdate, val);
  }
}

function formatDate(date) {
  var dd = date.getDate();
  var mm = date.getMonth() + 1;
  var y = date.getFullYear();
  return mm + '/' + dd + '/' + y;
}

function getDueDate(from, days) {
  var fromDate = new Date(from);
  var dueDate = new Date(from);
  dueDate.setDate(fromDate.getDate() + days * 1);

  return dueDate;
}
add();
$('.Mode').on('keyup', function() {
  add();
});
.master-row {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
the data
<div>
  <input type="text" class="Mode" value="3">
  <input type="text" id="txtDate" value="12/29/2018">
</div>

<div style="height:20px">

</div>
the table
<table id="appendRows">
  <tr class="master-row">
    <td><input type="text" name="Sno"></td>
    <td><input type="text" name="Date"></td>
  </tr>
</table>

要隐藏“主行”,我会这样做,最好将代码分解为单独的函数

【讨论】:

  • 下一行不能添加第二行值显示的日期
  • 对不起,没听懂,你的意思是空值行吗?第一个是数据输入,第二行是空的,因为它是您克隆的主行(您可以始终隐藏主行)
  • 检查第二个sn-p
  • 日期未添加相同的日期值显示
  • 2 行日期列加 3,第 3 行加 3 到第 2 行日期,
猜你喜欢
  • 2021-09-09
  • 2020-01-29
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2023-02-25
相关资源
最近更新 更多