jquery .val()函数中的Javascript .value返回错误的值...但仅限于移动设备上

时间:2012-03-13 15:55:29

标签: javascript mobile-devices

我在这个问题上撕扯我的头发。我有javascript代码,如下所示:

<script type=text/javascript>
function readVals(){
  val1 = $('#select1').val()
  val2 = $('#select2').val()
  val3 = etc.
}
</script>

<select id='select1'>
 <option value='val1'>val1</option>
 <option value='val2'>val2</option>
</select>
<select id='select2'>
 <option...

从桌面运行时,readVals方法运行正常,在Firefox,Chrome,Safari以及Mac,Ubuntu和Windows上进行测试。但是,从Android和iPhone,无论移动浏览器如何,$('#select2')。val()总是返回0.更奇怪的是我构建了另一个测试函数:

function getVal2(){
  alert($('#select2').val())
}

getVal2()readVals()之前宣布在页面的<head>中,即使在移动设备上也会提醒正确的值。所以我运行getVal2()并查看正确的值。然后我立即运行readVals()并获取错误的值,但仅适用于val2,仅适用于移动设备,但适用于任何移动浏览器。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

OMG,我刚刚意识到问题所在。只要添加var使其成为本地:

var val2 = ...

然后问题就消失了,但我刚想到为什么这个问题只出现在移动设备上:我简化并缩短了我的代码来提问,但变量的实际名称是orientation,我猜测移动设备使用它来描述设备是如何旋转的。这就解释了为什么从移动设备传入的值为0和90(以度为单位)。愚蠢的愚蠢。好吧,只花了三天才搞清楚。抱歉浪费你的时间。下次我将发布实际代码。

答案 1 :(得分:0)

您是否仅在使用pageinit事件呈现页面后尝试调用您的函数?

$(document).live( 'pageinit',function(event){
    readVals()
});