HTML jQuery submit返回纬度和经度

时间:2016-06-16 01:05:04

标签: jquery html forms

我有一个HTML表单,我希望能够填写,然后提交,然后在提交时显示经度和纬度。它似乎正在起作用,但是lat和long只会出现一瞬间。

这是我的代码:

<div class="container" ng-controller="TestCtrl">
    <h2>Test Form</h2>
    <form id="address" method="post">
        <div class="form-group">
            <label for="inputText1">Street</label>
            <input type="text" class="form-control" id="street_name" placeholder="Street" ng-model="street" name="street_address">
        </div>
        <div class="form-group">
            <label for="inputText2">House Number</label>
            <input type="text" class="form-control" id="street_number" placeholder="House Number" ng-model="housenumber" name="house_number">
        </div>
        <div class="form-group">
            <label for="inputText3">Postal Code</label>
            <input type="text" class="form-control" id="postal_code" placeholder="Postal Code" ng-model="postalcode" name="postal_code">
        </div>
        <div class="form-group">
            <label for="inputText4">City</label>
            <input type="text" class="form-control" id="city" placeholder="City" ng-model="city" name="city">
        </div>
       <button id="sub" type="submit" class="btn btn-default">SAVE</button>
        <label for="id_lat">Latitude</label><input type="text" name="lat" value="0.000000" id="id_lat" />
        <label for="id_lng">Longitude</label><input type="text" name="lng" value="0.000000" id="id_lng" />
    </form>
</div>

 <script type="text/javascript">
    $(document).ready(function() {
        var geocoder;
        var address;
        $('#address').submit(function() {
            geocoder = new google.maps.Geocoder();
            address = $('#street_name').val() + " " + $('street_number').val() + " " + $('#postal_code').val() + ", " + $('#city').val();
            geocoder.geocode( { 'address': address}, function(results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
                $('#id_lat').val(results[0].geometry.location.lat().toFixed(6));
                $('#id_lng').val(results[0].geometry.location.lng().toFixed(6));
                $('#address').unbind('submit');
                $('#address').submit();
              } else {
                $('#address').unbind('submit');
                $('#address').submit();
              }
            });
            return false;
        });
    });
</script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

他们只是因为你正在做的而短暂出现:

$('#address').unbind('submit');
$('#address').submit();

这将导致表单通过浏览器提交默认进程并重新加载页面。

目前还不清楚你的意图是做什么的

答案 1 :(得分:0)

由于$('#address').submit();,该字段的值正在重置HTML。

如果在此之后使用jQuery更改值,它将起作用:

$(document).ready(function() {
    $('#address').submit(function() {
         $('#id_lat').val("5");
         $('#id_lng').val("5");
         $('#address').submit();
         });
       $('#id_lng').val("5");
    });

https://jsfiddle.net/pjpwea/y4L9qc58/

在示例中注释掉第二个$('#id_lng').val("5");以查看差异。

答案 2 :(得分:0)

您的代码正在执行,但页面也会刷新,这就是为什么您会在短时间内看到结果。

如果您提交表单,它将重定向到action参数的url。如果没有操作参数,页面将刷新。

您可以通过阻止实际发送表单来阻止页面刷新。

替换此行$('#address').submit(function() { 以下几行:

$('#address').submit(function(e) {
    e.preventDefault();