Передача координат геолокации в скрытые поля в форме сообщения

0

Мне нужно передать некоторые поля формы в файл Perl, и у меня есть небольшая форма, которая делает трюк.

Теперь я хотел бы добавить 2 поля для широты и долготы с использованием геолокации, но я получаю пробелы для них. Я прочитал его, потому что геолокация асинхронна, но я не могу найти, как ее решить. Я даже добавил несколько советов из других ответов, но я не могу понять это правильно.

Может ли кто-нибудь помочь мне исправить это?

Это мой код:

<html>
<head>
    <script type="text/javascript">
        var lati =0;
        var longi =0;
        function getPosition(position) 
        {
            lati = position.coords.latitude;
            longi = position.coords.longitude;
            form.latitude.value = lati;
            form.longitude.value = longi;
        }

        function writeLati(form)
        {
            if (navigator.geolocation) { 
                navigator.geolocation.getCurrentPosition(getPosition);

            } else {
                form.latitude.value = "3";
                form.longitude.value = "5";
                document.write("Your browser can't do geolocation.");
            }

        }



    </script>
</head>

<body BGCOLOR="#FFFFFF" onLoad="writeLati(locform)">


<H1>Page Title</H1>     

<FORM name="locform" ACTION=../cgi-bin/rally.pl METHOD=POST>    

Car Number:         

    <INPUT TYPE="TEXT" NAME="Number" LENGTH=2 />    
    <INPUT TYPE="HIDDEN" NAME="Stage" VALUE=0 />
    <input type="HIDDEN" name="latitude" />
    <input type="HIDDEN" name="longitude"/>
    <P>         
    <INPUT TYPE=SUBMIT VALUE="Send">    
</FORM>     



</body>
Теги:
forms

1 ответ

0

Насколько я могу судить, проблема - это просто некоторые ошибки JavaScript.

Начиная с <body BGCOLOR="#FFFFFF" onLoad="writeLati(locform)">

locform не существует. Вам нужно использовать что-то вроде document.getElementById чтобы получить то, что вы ожидаете отсюда. (Чтобы использовать getElementById, вам нужно указать идентификатор в своей форме).

Также в function getPosition(position)

Вы пытаетесь назначить form.latitude.value, однако form - это локальная переменная в function writeLati к которой здесь нельзя получить доступ.

Это помогло мне решить эти проблемы.

  • 0
    Извините, что беспокою вас, но я не программист (ну, я был 30 лет назад, когда языки и логика были совершенно разными). Не могли бы вы исправить мой код с вашими предложениями и опубликовать его?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню