2012-03-13 9 views
0

私はこの問題に関して私の髪を引き裂いています。Javascriptの.valueとjqueryの.val()関数は、間違った値を返します...ただし、モバイルデバイスでのみ

<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の、クロム、サファリとMac、UbuntuとWindowsのからでテスト:私はこのようになりますjavascriptのコードを持っています。しかし、AndroidやiPhoneから、関係なく、モバイルブラウザの、$(「#SELECT2」)のval()は常に何より奇妙なのですが、私はこのような別のテスト機能構築という点である0を返します。

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

getVal2()が宣言されているがreadVals()の直前、ページの<head>にあり、モバイルデバイスであっても正しい値を通知します。だから私はgetVal2()を実行し、正しい値を参照してください。その後、すぐにreadVals()を実行して間違った値を取得しますが、モバイルデバイスのみで、モバイルブラウザではval2に限られます。

アイデア?

+0

ああ、私は注意する必要があります:$( '#select2')。val()をdocument.getElementbyId( 'select2')。valueと交換しようとしました。 –

+1

'option'属性は' value'ではなく 'val'です。 –

+0

ああ、私はこれをメモリから書いていました。私のコードは 'val'ではなく 'value'を使用しているので、それは問題ではありません。私は質問でそれを修正します。 –

答えて

1

OMG、私はちょうど問題が何であるかを理解しました。すぐにそれをローカルにするためにvarを追加したよう:

var val2 = ... 

問題は去っていきましたが、問題は、モバイルデバイスのみにした理由、それはちょうど私に起こった:私は簡素化と短縮され、私のコードを質問したが、変数の実際の名前はorientationで、デバイスがどのように回転したかを記述するためにモバイルデバイスが使用していると推測しています。これは、モバイルデバイスからの値が0度と90度のような理由を説明しています。愚かなばかな愚か。さて、それは3日で分かりました。あなたの時間を無駄にして申し訳ありません。次回は実際のコードを掲載します。

0

pageinitイベントを使用して、ページがレンダリングされた後にのみ関数を呼び出そうとしましたか?

$(document).live('pageinit',function(event){ 
    readVals() 
}); 
関連する問題