Широта и LNG не отображаются в форме ввода в HTML

#javascript #html #geolocation

#javascript #HTML #геолокация

Вопрос:

Я использую приведенный ниже код, чтобы получить широту и LNG моего текущего местоположения, чтобы отобразить его в форме ввода, но по какой-то причине он не отображает мои широту и LNG, как хотелось, а отображает широту и LNG во мгновение ока и исчезает. Я попытался изменить разрешение своего браузера, чтобы разрешить местоположение, и все равно отображается мгновенно и исчезает. Кто-нибудь может помочь? Ниже приведен мой код:

 


<form>  

<button onclick="onFormSubmit()">GET CURRENT LOCATION</button>



<script type="text/javascript">
function onGeoSuccess (position) {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

        // NEXT 2 LINES WILL SET VALUE OF RESPECTIVE INPUTS
        document.getElementById('lat').value = lat;
        document.getElementById('lng').value = lng;

        // MAKE API CALL HERE, OR ANY OTHER NEXT STEPS
    }

    function onGeoError (err) {
        console.error("Error while trying to get position", err);
    }

    function onFormSubmit () {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(onGeoSuccess, onGeoError);
        } else {
            alert('GeoLocation not supported or not allowed');
        }
    }</script>

              <div class="form-group">
                <input type="text" name="lat" class="form-control" id="lat" placeholder="Your Latitude" data-msg="Please enter your latitude">
                <div class="validate"></div>
              </div>

<div class="form-group">
                <input type="text" name="lng" class="form-control" id="lng" placeholder="Your Longitude" data-msg="Please enter your Longitude">
                <div class="validate"></div>
              </div>

              <div class="form-group">
                <input type="text" name="subject" class="form-control" id="contact-subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject">
                <div class="validate"></div>
              </div>


</form>



 

Я просто хочу получить отображение LAT и LNG в форме ввода с каждым из его идентификаторов, но я не знаю, что я делаю не так. Он отображается не так, как хотелось бы.

Комментарии:

1. Поскольку координаты отображаются в течение доли секунды, похоже, что вызывается успешный обратный вызов. Вы получаете какие-либо сообщения об ошибках в своей консоли?

2. нет ошибки, может ли это быть результатом моего шаблона веб-сайта?

3. Не знаю. Что он печатает, когда вы position первым делом регистрируетесь в своем onGeoSuccess обратном вызове?

4. да, я попытался добавить «onFormSubmit» в <body onload = «onFormSubmit»> </body> и это работает, но я не хочу, чтобы он загружал текущее местоположение, не нажимая на «ПОЛУЧИТЬ ТЕКУЩЕЕ МЕСТОПОЛОЖЕНИЕ»

5. Что position печатается?

Ответ №1:

Итак, я отследил свой код и устранил ошибку и обнаружил, что это было просто потому, что я использовал <button onclick="onFormSubmit()">GET CURRENT LOCATION</button> вместо <button onclick=" return onFormSubmit()">GET CURRENT LOCATION</button> . Когда я onFormSubmit onclick по какой-то причине вызываю just on, он появляется на долю секунды и исчезает, но когда я вызываю return onFormSubmit() onclick , все работает отлично.

Комментарии:

1. Хорошо, но это не объясняет основную проблему. Почему lat и lng внезапно отображаются, когда onFormSubmit вызывается чем-то другим и в другое время?

2. У вас есть лучшее решение для этого? Я открыт для лучшего решения, не уверен, почему оно появляется и отображается. Когда я создал простую HTML-страницу без CSS, она работает отлично, но когда я добавляю к ней CSS, Javascript и другие, она исчезает.

3. Трудно предложить решение, не поняв сначала проблему. Какой у вас CSS? Вы сузили его до оператора CSS, который вызывает проблему?

4. На какую часть CSS я должен обратить внимание? Должен ли я вставить сюда свой CSS?

5. Да, вставьте его сюда, а также начните выполнять двоичный поиск по нему: удалите половину своего CSS-кода, посмотрите, сможете ли вы все еще воспроизвести ошибку. Если нет, проверьте другую половину. Если да, уменьшите его вдвое еще раз. И так далее. Пока вы не найдете строку, которая вызывает проблему.