jQuery Mobile: обновить значение входного виджета в браузерах Webkit. - PullRequest
0 голосов
/ 02 июля 2011

Я создаю веб-приложение с помощью jQuery Mobile.Я пытаюсь использовать JavaScript, чтобы установить значение входного виджета в функции, связанной с событием "pageshow".Он работает в Firefox, но не работает в браузерах Webkit (Safare, Mobile Safari, Chrome ...).

Следующее определено как часть функции $ (document) .ready ():

$('#decimal').live('pageshow', function(event, ui){
  $('#dLat').val(gps.latitude)
  $('#dLong').val(gps.longitude);
  gps.altitude = null;
});

html для "страницы" JQM:

<div data-role="page"  id="decimal" data-theme="c" > 
  <div data-role="header" data-backbtn="false">
    <h1>Decimal Entry</h1>  
  </div> 
  <div data-role="controlgroup"  class="dInput">
    <label for="dLat">Lat: </label>
    <input type="number" class="dInput" name="dLat" id="dLat" value=""><br>
    <label for="dLong">Lon: </label>
    <input type="number" class="dInput" name="dLong" id="dLong" value=""><br>
  </div>
  <a href="#manual" data-role="button" data-inline="true" id="btnDecimalSubmit"> Done </a>
</div>  

Требуется ли какое-либо дополнительное обновление браузеров Webkit?Если да, то как мне это сделать дляэлементы?

Псевдо-кнопка отправки также не закрывает диалоговое окно, но только в браузерах Webkit.

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Привет, я сталкивался с этой проблемой раньше. Попробуйте использовать событие mobileinit вместо события готовности документа.

$(document).bind("mobileinit", function() {
$("#somePage").live( 'pageshow', function( event ) {
    Do some stuff here

Это решило подобную проблему для меня, надеюсь, это поможет.

0 голосов
/ 02 июля 2011

Я протестировал ваш код, разместив его на отдельной странице следующим образом (с альфа-версией jQM), и это работает в WebKit. Я ценю, что это не диалог, но я не знаю каких-либо различий в WebKit из-за этого.

Я подозреваю, что часть проблемы может заключаться в том, что у вас есть pageshow, завернутый в $(document).ready - вам не нужно это делать. Вот как выглядит раздел Javascript на моей тестовой странице:

<script type="text/javascript">
    $('#decimal').live('pageshow', function(event, ui){
     $('#dLat').val(55.5603);
     $('#dLong').val(56.1356);
  });
</script>

(я удалил переменную gps и установил жестко запрограммированные значения, потому что, очевидно, у меня нет этого фрагмента кода).

...