0

I have got this code to clone my input field when someone click on the add more button.

javascript

$(".multipleunitaddress").each(function(){
  var multipleunitaddressinput = $(this).get(0);
  autocomplete2 = new google.maps.places.Autocomplete(multipleunitaddressinput, 
  {
    componentRestrictions: {country: "nz"}
  });
});


$("#addmore").click(function(){
  var newelement = $("#multipleunitaddress").clone();
  $(this).before(newelement);
  autocomplete3 = new google.maps.places.Autocomplete(newelement,                                                      
  {
    componentRestrictions: {country: "nz"}
  });
})

html

<div class="controls" id="multipleunitaddresswrapper">
  <input type="text" id="multipleunitaddress" class="multipleunitaddress" name="multipleunitaddress" value="" class="required" placeholder="Property's Google-safe address" autocomplete="off">

  <button id="addmore" class="btn btn-danger">Add more</button>
</div>

The default input run google maps autocomplete fine. The add more button clones my inputs. However, for the new clone inputs, google maps autocomplete do not apply. How can I make Google maps autocomplete works on the clone element?

Mosh Feu
  • 28,354
  • 16
  • 88
  • 135
Alex Chen
  • 133
  • 1
  • 10
  • use `.clone(true);` [docs](https://api.jquery.com/clone/) –  Nov 23 '15 at 03:39
  • Possible duplicate of [jQuery clone() not cloning event bindings, even with on()](http://stackoverflow.com/questions/9549643/jquery-clone-not-cloning-event-bindings-even-with-on) –  Nov 23 '15 at 03:40
  • I tried .clone(true); it did not help :( – Alex Chen Nov 23 '15 at 04:03
  • could you stick your code in a [jsfiddle](http://jsfiddle.net)? i always have trouble getting the code snippet thing here to work –  Nov 23 '15 at 04:10

1 Answers1

0

I got it working using livequery with the following code

html

  <div class="controls">
    <div class="multipleunitaddresswrapper">
      <input type="text" class="multipleunitaddress" name="multipleunitaddress" value="" class="required" autocomplete="off">
    </div>
    <button id="addmore" class="btn btn-danger" type="button">Add more</button>
  </div>

javascript

$(".multipleunitaddress").livequery(function()
  {
    var multipleunitaddressinput = $(this).get(0);
    autocompleteInput = new google.maps.places.Autocomplete(multipleunitaddressinput, 
   {
    componentRestrictions: {country: "nz"}
  });
});

$("#addmore").click(function(){
  var newelement = $(this).prev(".multipleunitaddresswrapper").clone();
  newelement.find("input").val("");
  $(this).before(newelement);
})
Mosh Feu
  • 28,354
  • 16
  • 88
  • 135
Alex Chen
  • 133
  • 1
  • 10