将地理位置坐标传递给帖子表单中的隐藏字段

时间:2014-01-04 04:37:58

标签: javascript html forms perl

我需要将一些表单字段传递给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>

1 个答案:

答案 0 :(得分:0)

据我所知,问题只是一些javascript错误。

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

开始

locform不存在。您需要使用类似document.getElementById的内容来获得您期望的内容。 (要使用getElementById,您需要在表单上放置一个ID)。

同样在function getPosition(position)

您正在尝试分配form.latitude.value,但formfunction writeLati中的局部变量,无法在此处访问。

在解决这些问题后,它对我有用。