2011-07-02 50 views
0

我正在使用jQuery Mobile構建一個web應用程序。我試圖使用javascript來設置綁定到「pageshow」事件的函數中的輸入小部件的值。它適用於Firefox,但在Webkit瀏覽器(Safare,Mobile Safari,Chrome ...)中失敗。jQuery Mobile:刷新Webkit瀏覽器中的輸入小部件值

被定義爲$(文件)的一部分下面。就緒()函數:

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

爲JQM 「頁」 的HTML是:

<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瀏覽器。

+0

嘗試pagebeforeshow而不是pageshow –

回答

0

我測試了你的代碼,將它放在一個獨立的頁面中,如下所示(使用jQM alpha),這可以在WebKit中使用。我明白,這不是作爲對話框運行的,但我並不知道WebKit有任何差異。

我懷疑問題的一部分可能是你的東西包裝在$(document).ready - 你不需要那樣做。下面是在我的測試頁中的JavaScript部分的外觀:

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

(我刪除了gps變量,因爲很明顯我沒有那件代碼的設置硬編碼值)。

+0

Poole我很困惑。 pageshow的東西被包裝在$(document).ready中,但是把它拿出來似乎沒有影響任何東西。 – RAMilewski

+0

感謝您的關注!我在[link](http://netfools.com/test23/)上使用靜態數據構建了一個小型測試用例,它似乎工作正常。 使用地理位置[鏈接](http://netfools.com/position)的大(雜亂)版本失敗。 我很困惑如何去調試這個。我在pageshow函數中添加了一個console.log語句,看起來它在Chrome中從未觸發。 我會報告我最終在這裏找到的任何東西。 感謝您的幫助! – RAMilewski

+0

在研究這個問題時,我發現專家們爲jQuery Mobile寫了一些介紹,其中包含諸如「每個頁面都必須符合jQuery Mobile標準」等短語。 ......但他們似乎從未提供與該「標準」的鏈接。顯然他們是正確的。我對頁面進行了一些更改,現在它可以工作(加或減一些格式問題)。但是我不知道哪個改變解決了問題! jQuery Mobile明顯優於jQuery Mobile文檔。 – RAMilewski

0

嘿,我之前遇到過這個問題。嘗試使用mobileinit事件而不是文檔就緒事件。

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

爲我解決了類似的問題,我希望它有幫助。