user3429531
user3429531

Reputation: 355

Adding new date-picker input field when button click

I have a button that add a new bootstrap date-picker input field when the add button is clicked.

The problem I am facing is when the new bootstrap date-picker input field is added, it doesn't allow me to select date and the size of those newly added bootstrap date-picker input field isn't the same as the first input field

$(document).ready(function() {
  var counter = 2;
  $("#addBtn").click(function() {
    var newRowDiv = $(document.createElement('div')).attr("class", 'row');
    var newStartDateLabel = $(document.createElement('div')).attr("class", 'col-md-2');
    var newStartDateInput = $(document.createElement('div')).attr("class", 'col-md-2', 'input-group', 'input-daterange');

    newStartDateLabel.appendTo(newRowDiv);
    newStartDateLabel.after().html("Start Date " + counter);
    newStartDateInput.insertAfter(newStartDateLabel).html('<input "id="startDate"' + counter + 'name="startDate' + counter + 'type="text class="form-control" >');
    newRowDiv.appendTo(".container");
    counter++;
  });
});
<body>
  <form id="form" name="form" action="DateServlet" method="POST">
    <div class="container">
      <div class="row">
        <div class="col-md-2">
          Start Date 1
        </div>
        <div class="col-md-2 input-group input-daterange">
          <input id="startDate1" name="startDate1" type="text" class="form-control">
        </div>
      </div>
    </div>
    <button id="addBtn" type="button" class="btn btn-default">Add</button>
  </form>
  <script type="text/javascript">
    $('.input-daterange input').each(function() {
      $(this).datepicker("clearDates");
    });
  </script>
</body>

Upvotes: 1

Views: 1749

Answers (1)

vijayP
vijayP

Reputation: 11502

Please look at below code. Specifically made changes at:

 var newStartDateInput = $(document.createElement('div'))
                  .attr("class", 'col-md-2 input-group input-daterange');

AND

var dateText = $('<input id="startDate' + counter + '" name="startDate' + counter + '" type="text" class="form-control" >');
newStartDateInput.insertAfter(newStartDateLabel).html(dateText);
dateText.datepicker(); //initializing the datepicker on newly added text field

<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/css/bootstrap-datepicker.min.css">
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/js/bootstrap-datepicker.min.js"></script>
  <script type="text/javascript" src="js/addInput.js" charset="UTF-8"></script>
  <script>
    $(document)
      .ready(
        function() {
          var counter = 2;
          $("#addBtn")
            .click(
              function() {
                var newRowDiv = $(
                    document
                    .createElement('div'))
                  .attr("class", 'row');

                var newStartDateLabel = $(
                    document
                    .createElement('div'))
                  .attr("class", 'col-md-2');

                var newStartDateInput = $(
                    document
                    .createElement('div'))
                  .attr("class", 'col-md-2 input-group input-daterange');

                newStartDateLabel
                  .appendTo(newRowDiv);

                newStartDateLabel.after().html(
                  "Start Date " + counter);

                var dateText = $('<input id="startDate' + counter + '" name="startDate' + counter + '" type="text" class="form-control" >');
                newStartDateInput
                  .insertAfter(
                    newStartDateLabel)
                  .html(dateText);

                dateText.datepicker(); //initializing the datepicker on newly added text field

                newRowDiv.appendTo(".container");

                counter++;
              });
        });
  </script>
</head>

<body>
  <form id="form" name="form" action="DateServlet" method="POST">
    <div class="container">
      <div class="row">
        <div class="col-md-2">
          Start Date 1
        </div>
        <div class="col-md-2 input-group input-daterange">
          <input id="startDate1" name="startDate1" type="text" class="form-control">
        </div>
      </div>
    </div>
    <button id="addBtn" type="button" class="btn btn-default">Add</button>
  </form>

  <script type="text/javascript">
    $('.input-daterange input').each(function() {
      $(this).datepicker("clearDates");
    });
  </script>
</body>

</html>

Upvotes: 2

Related Questions