Функции Javascript .value и jquery .val () возвращают неверное значение ... но только на мобильных устройствах - PullRequest
0 голосов
/ 13 марта 2012

Я рву волосы над этой проблемой. У меня есть код 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 ]

1 голос
/ 14 марта 2012

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

var val2 = ...

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

0 голосов
/ 14 марта 2012

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

$(document).live( 'pageinit',function(event){
    readVals()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...