2012-03-13 1 views
0

Я отрываю свои волосы от этой проблемы. У меня есть яваскрипта код, который выглядит следующим образом:. Значения .val() .value и jquery в 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, независимо от мобильного браузера, $ («# ВЫБ.2») Вал() всегда возвращает 0. Что более странно, что я построил еще одну тестовую функцию так:

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

getVal2() объявлен прямо перед readVals(), в <head> на странице, и он предупреждает о правильном значении даже на мобильных устройствах. Поэтому я запускаю getVal2() и вижу правильное значение. Затем я сразу же запускаю readVals() и получаю неправильное значение, но только для val2 и только на мобильных устройствах, но в любом мобильном браузере.

Любые идеи?

+0

oh, и я должен отметить: попытался обменять $ ('# select2'). Val() с document.getElementbyId ('select2'). Значение и получил те же результаты. –

+1

Атрибут 'option' -' значение' не 'val'. –

+0

ой, я писал это из памяти, кричит. Мой код использует «значение», а не «val», поэтому это не проблема. Я исправлю это в вопросе. –

ответ

1

OMG, я только понял, в чем проблема. Как только добавил var сделать это местные:

var val2 = ... 

тогда проблема ушла, но это только мне пришло в голову, почему этот вопрос только на мобильных устройствах: Я упростил и сократил свой код, чтобы задать вопрос, но фактическое имя переменной было orientation, которое, как я предполагаю, используется мобильными устройствами для описания того, как устройство было повернуто. Это объясняет, почему значения, поступающие с мобильных устройств, равны 0 и 90 (как в градусах). Глупый глупый глупый. Ну, это заняло всего три дня. Извините за то, что потратил ваше время. В следующий раз я отправлю фактический код.

0

Вы пытались вызвать свою функцию только после отображения страницы, используя событие pageinit?

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