【问题标题】:jQuery datepicker on dynamically generated rows动态生成的行上的jQuery datepicker
【发布时间】:2015-06-01 06:08:17
【问题描述】:

我正在使用以下 javascript 代码动态生成表行:

$('#addNew').on('click', function() {
    var clone = $('table.table-responsive tr.cloneme:first').clone();
    console.log(clone);
    clone.append("<td><button class='deleteAdded btn btn-danger'>Remove</button></td>")
    $('table.table-responsive').append(clone);
    calculateSum();
});

这是我将 jQuery 日历附加到日期输入的脚本

$(function() {
    $('input').filter('.datepicker').datepicker({
        dateFormat: 'yy-mm-dd',
        changeMonth: true,
        changeYear: true,
    });
});

现在我面临的问题是 jQuery 日历只在第一行弹出。它不适用于生成的行。

这在我的 html 中

<td>
    <input type="text" class="form-control datepicker" name="invoiceDate[]" readonly="readonly" />
</td>

请告诉我如何让 jQuery 日历在所有动态生成的行上工作。环顾 Google,但没有任何帮助。

提前致谢。

【问题讨论】:

  • 在calculateSum()之后添加日期选择器代码;

标签: javascript jquery html datepicker


【解决方案1】:

您必须在创建新行后启动日期选择器

jQuery(function($) {
  //create a original copy of the row to clone later
  var $tr = $('table.table-responsive tr.cloneme:first').clone();

  //add dp to existing rows
  addDP($('input.datepicker'));

  $('#addNew').on('click', function() {
    var clone = $tr.clone();
    console.log(clone);
    clone.append("<td><button class='deleteAdded btn btn-danger'>Remove</button></td>");
    //add dp to the new row
    addDP(clone.find('input.datepicker'));
    $('table.table-responsive').append(clone);
    calculateSum();
  });

  function addDP($els) {
    $els.datepicker({
      dateFormat: 'yy-mm-dd',
      changeMonth: true,
      changeYear: true,
    });
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script>
<table class="table-responsive">
  <tr class="cloneme">
    <td>
      <input type="text" class="form-control datepicker" name="invoiceDate[]" readonly="readonly" />
    </td>
  </tr>
</table>
<button id="addNew">Add</button>

【讨论】:

  • 谢谢。你的代码帮助很大,它对我有用。非常感谢
【解决方案2】:
$('#addNew').on('click',function(){
    .....
    .....
    addDP();
});

addDP();

function addDP(){

    $('input').filter('.datepicker').datepicker({
        dateFormat: 'yy-mm-dd',
        changeMonth: true,
        changeYear: true,
    });

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2012-04-29
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多