jquery, отправьте форму после геокодирования карт Google - PullRequest
2 голосов
/ 02 июня 2011

У меня есть форма, которая собирает адрес лица. Когда они нажимают «Отправить», я хочу геокодировать их адрес и использовать его для заполнения полей lat и lng. Вот что я делаю сейчас, основываясь на втором ответе: Форма отправки не останавливается в вызове jquery ajax

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    $(document).ready(function() {
        var geocoder;
        var address;
        $('#theform').submit(function() {
            geocoder = new google.maps.Geocoder();
            address = $('#id_street').val() + " " + $('#id_street2').val() + " " + $('#id_city').val() + ", " + $('#id_state').val() + " " + $('#id_zip').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));
                $('#theform').unbind('submit');
                $('#theform').submit();
              } else {
                $('#theform').unbind('submit');
                $('#theform').submit();
              }
            });
            return false;
        });
    });
</script>

и форма

<form method="POST" id="theform" action="">
    <li><label for="id_street">Street</label> <input id="id_street" type="text" name="street" value="3520 Lebon Dr." maxlength="100" /></li>
    <li><label for="id_street2">Street2 (optional)</label> <input id="id_street2" type="text" name="street2" maxlength="100" /></li>
    <li><label for="id_city">City</label> <input id="id_city" type="text" name="city" value="San Diego" maxlength="50" /></li>
    <li><label for="id_state">State</label> <select name="state" id="id_state">
    ...a bunch of state options...
    <li><label for="id_zip">Zip Code</label> <input id="id_zip" type="text" name="zip" value="92122" maxlength="30" /></li>
    <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>

Поля lat и lng заполняются нормально, но форма на самом деле не отправляется $ ('# theform'). Submit (). Чтобы действительно отправить форму, вы должны нажать кнопку отправить еще раз.

Есть идеи о том, что я делаю не так? И в случае, если кто-нибудь спросит, я хочу отправить форму, даже если геокодирование не удастся, так как в этом случае я буду использовать geopy для геокодирования на стороне сервера адресов.

редактирование: Итак, я сделал очень простой пример и вообще не могу заставить себя работать:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

<script type="text/javascript">
$(function() {
    $('#subby').click(function() {
        $('#theform').submit();
    });
});

</script>

</head>
<body>
<a href="#" id="subby">Submit</a>
<form id="#theform" action="javascript:alert('success!');">
      <input type="submit" />
</form>
</body>
</html>

Я ожидаю, что при нажатии на ссылку «Отправить» вы получите окно предупреждения, как и при нажатии кнопки «Отправить», но это не так. Что я делаю не так с submit?

1 Ответ

0 голосов
/ 02 июня 2011

Я только что понял это.Я случайно пропустил кнопку отправки из формы, которую я разместил.Это было названо представить.Очевидно, что все портит jquery (спасибо: jQuery не отправляет форму )Простой пример, который я разместил, все еще не работает, и я не уверен, почему, но моя настоящая проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...