2016-06-08 25 views
0

Ich kann Autovervollständigen-Eingabe mit jquery .val() nicht erhalten, da. Val() nur Eingabewert zurückgibt, der von mir selbst eingegeben wurde, aber nicht, was von Autocomplete hinzugefügt wurde.Wie bekomme ich Wert von Autocomplete-Eingabe mit jquery .val()?

jquery .val() gibt nur den vollen Wert zurück, wenn Änderungen an anderen Feldern vorgenommen werden.

Ich verwende Google Maps Autocomplete für die Adresse, und dann übergebe ich diese Adresse an Google Maps API, um Entfernungen zwischen zwei Adressen zu erhalten. Das Problem ist, dass "start = $ ('# id_rent_delivery_address'). Val()" nur einen Adressteil erhält, der manuell, aber nicht automatisch vervollständigt wird.

Vielleicht haben Sie irgendwelche Ideen, wie ich es beheben könnte?

Mein Code:

<script> 

    $(document).ready(function() { 
     initAutocomplete(); 
    }); 

    var autocomplete, autocomplete2; 

    function initAutocomplete() { 
     // Create the autocomplete object, restricting the search to geographical 
     // location types. 
     autocomplete = new google.maps.places.Autocomplete(
       /** @type {!HTMLInputElement} */(document.getElementById('id_rent_withdraw_address')), 
       {types: ['geocode']}); 


     autocomplete2 = new google.maps.places.Autocomplete(
       /** @type {!HTMLInputElement} */(document.getElementById('id_rent_delivery_address')), 
       {types: ['geocode']}); 

     // When the user selects an address from the dropdown, populate the address 
     // fields in the form. 

    } 

</script> 





<script type="text/javascript"> 

$(document).on('change', '#rent-confirm-form', function() { 

    var start = $('#id_rent_delivery_address').val(); 
    var end = $('#id_rent_withdraw_address').val(); 

    GetRoute(start, end); 

}); 

    function GetRoute(start, end) { 
     //*********DISTANCE AND DURATION**********************// 
     var service = new google.maps.DistanceMatrixService(); 
     service.getDistanceMatrix({ 
      origins: [start], 
      destinations: [end], 
      travelMode: google.maps.TravelMode.DRIVING, 
      unitSystem: google.maps.UnitSystem.METRIC, 
      avoidHighways: false, 
      avoidTolls: false 
     }, function (response, status) { 
      if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") { 
       var distance = response.rows[0].elements[0].distance.text; 
       var duration = response.rows[0].elements[0].duration.text; 

       console.log(distance); 
       console.log(duration); 
       console.log(start); 
       console.log(end); 

      } else { 
       console.log("Unable to find the distance via road."); 
      } 
     }); 
    } 

</script> 

Antwort

0

von mir gelöst. Einfach simulierte Formänderung mit der jquery-Trigger-Methode.

$("#anyInput").trigger("change");