Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.getElementById().value的格式为';s隐藏字段asp.net网页_Javascript_Html_Asp.net_Razor - Fatal编程技术网

Javascript document.getElementById().value的格式为';s隐藏字段asp.net网页

Javascript document.getElementById().value的格式为';s隐藏字段asp.net网页,javascript,html,asp.net,razor,Javascript,Html,Asp.net,Razor,我使用ASP.NET网页(使用Razor标记)创建了一个简单的网站。我有一个带有两个隐藏字段的表单:纬度和经度。在我的JS脚本中,我使用HTML5地理定位API获取用户的位置,以度(纬度和经度)表示,然后尝试将这些值分配给表单中的两个隐藏字段,然后再将它们发送到服务器 问题是我使用getElementById().value方法来分配这些值,但它似乎不起作用!我可以使用一个简单的alert()消息在脚本中的同一位置打印出值,因此我很确定getElementById().value不起作用 以下是

我使用ASP.NET网页(使用Razor标记)创建了一个简单的网站。我有一个带有两个隐藏字段的表单:
纬度
经度
。在我的JS脚本中,我使用HTML5地理定位API获取用户的位置,以度(纬度和经度)表示,然后尝试将这些值分配给表单中的两个隐藏字段,然后再将它们发送到服务器

问题是我使用
getElementById().value
方法来分配这些值,但它似乎不起作用!我可以使用一个简单的
alert()
消息在脚本中的同一位置打印出值,因此我很确定
getElementById().value
不起作用

以下是我表格的代码:

<form  id="locationForm" method="post" action="" onsubmit="return getLocation()">
Search for cinema showings in my area<br />
<input type="hidden" name="latitude" id="latitude" value="" />
<input type="hidden" name="longitude" id="longitude" value=""/>
<input type="submit" value="Submit" class="submit"/>
</form>

搜索我所在区域的电影院放映
下面是我的脚本代码:

<script>
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
    else {
        alert("Geolocation is not supported by this browser.");

    }
}
function showPosition(position) {

    var lat = position.coords.latitude;
    alert("lat is: " + lat);

    document.getElementById('latitude').value = position.coords.latitude;

    document.getElementById("longitude").value = position.coords.longitude;
}

函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}
否则{
警报(“此浏览器不支持地理位置”);
}
}
功能显示位置(位置){
var lat=位置坐标纬度;
警报(“lat为:+lat”);
document.getElementById('latitude')。value=position.coords.latitude;
document.getElementById(“经度”).value=position.coords.longitude;
}

问题在于,它是异步运行的。因此,表单提交处理程序将不会等待
geolocation.getCurrentPosition()
方法完成并执行它的成功回调-在这里您将值分配给输入字段。而是继续执行,即:

您已经在内联事件处理程序中指定了
onsubmit=“return getLocation()”
,但您没有返回任何内容-因此,无论
geolocation
方法的状态如何,函数都将立即返回
undefined
,并提交


通过使用
event.preventDefault()
阻止表单提交,并在
getCurrentPosition()
的成功回调中手动提交表单,可以解决此问题,如下所示:

HTML:


如果我没有弄错的话,当表单已经提交时,
onsubmit
被触发。
尝试通过submit按钮的
onclick调用函数。我尝试了另一种方法。
在表单中添加名称,如
name=“geoform”

现在,在
showPosition
功能中,将最后几行更改为:

document.geoform.latitude.value = position.coords.latitude;
document.geoform.longitude.value = position.coords.longitude;

好的,我解决了这个问题,虽然它可以被认为是一个“黑客”位。 我创建了一个单独的按钮,该按钮调用相同的getLocation函数来更改纬度和经度字段的值,并使用以下命令提交表单:

document.locationForm.submit();
然后在加载页面时,我使用jQuery隐藏submit按钮:

<script>
$(document).ready(function(){
$(".submit").hide();
});
</script>

$(文档).ready(函数(){
$(“.submit”).hide();
});

我注意到,旧脚本确实更改了隐藏字段的值,只是没有将它们发布到服务器。如果有人发现是什么原因导致这不起作用是欢迎的,但现在感谢所有的答案

我为我的英语道歉。。。我的母语是葡萄牙语/巴西语

我也有同样的问题。我不得不在许多浏览器和Windows版本中检查我的代码

文件。GetElementById(HIDDENFormVariable)。值='string'未在中运行

  • IE 11 Windows 7:不运行
  • Mozila Windows 7:不运行
  • Chrome 37.0.2062.124 Vista业务:不运行
  • Chrome 38.0.2125 Windows 7:不运行
  • Chrome 38.0.2125 Windows XP:不运行
  • IE 9 Windows Vista业务:是否运行
  • IE 7 Windows XP:是否运行
但是

在Windows资源管理器11中,如果您在
[Tools]>[Compatibility View Settings]
中进行更改,并将您的站点包含在列表中,则它将在使用IE 11的Windows 7中正常运行。然后不是一个错误,但它是由IE更改的。Chrome不接受任何我检查过的Windows或旧版本中隐藏的更改输入

我用另一种方法解决了它

我在哪里

我改成


文本输入可以通过javascript进行更改,并且在
DIV中
它们不需要显示在屏幕上。

什么症状导致您认为它“不起作用”?您是否测试过您的服务器(或您提交到的任何服务器)以确保解析表单数据时没有问题?此脚本标记。。。放在哪里?控制台中是否有任何错误。如果“latitude”或“longitude”不存在,则应收到“can not invoke property value of null”或类似消息。它不会将任何值传递给服务器端。当我像value=“000000”那样硬编码时,它会很好地传递这些信息。@OscarPaz如果
警报
起作用,它不应该是关于客户机上纬度/经度的实际查找。脚本放在前面的末尾。使用WebMatrix 3,没有错误。没有否决投票,但我想使用表单将这些值latitude和longitude传递给服务器,而不显示它们,因此使用了隐藏字段。感谢您的回答。我使用文本框显示
getElementId()
正在工作,这是您问题的标题。您如何访问服务器端的值?您不能在服务器端使用javascript访问它。javascript和函数工作正常,如fiddle所示。如果为true,则使用ifPost获取值,如果为false,则显示表单我也想到了这一点,但他使用的是
return getLocation()
getLocation()
返回
undefined
,该值被解释为false,因此表单不会提交。如果我这样做:document.getElementById(“经度”).value=position.co
document.locationForm.submit();
<script>
$(document).ready(function(){
$(".submit").hide();
});
</script>