2011-08-23 60 views
6

我在設置jQuery Mobile Text Input的顯示文本時遇到了問題。下面是我的代碼設置jquery移動輸入字段的文本

$('#editPartyName').textinput(); 
$('#editPartyName').val(party.name); 

的行爲很古怪,第一次模態顯示,文本輸入框是一個模式(jQuery Mobile的簡單的對話插件),該文本是在輸入字段模態就好了。但是,第二次顯示模態時,輸入中的可視文本將消失。當我檢查元素的值時,alert($('#editPartyName).val());價值在那裏,是正確的。文本將不會顯示在元素中。我正在使用JQM Beta 1.我也嘗試在val()聲明後面粘貼$('#editPartyName')。textinput()。

有人有什麼建議嗎?謝謝!

+0

當通過'.val(「」)'編程設置值並發現調用'.focus()時,我有'後期造型'問題。blur()'解決了它。 – pstanton

回答

3

要創建jQuery Mobile文本輸入樣式,請使用.textinput()並刷新您使用的現有jQuery Mobile文本輸入的視圖.textinput("refresh")。因此,在隨後的調用中,您需要使用.textinput("refresh")方法,並且在未初始化的文本輸入中,您需要使用.textinput()

喜歡的東西:

$('#editPartyName').val(party.name).textinput('refresh'); 

我的經驗是選擇輸入,但我相信這是對文本輸入相同的,這裏是我做選擇更新視圖:

$("select#foo").selectmenu("refresh"); 

這示例來自文檔:http://jquerymobile.com/demos/1.0b1/docs/forms/forms-selects.html(頁面底部)

更新

你不應該需要做以外的任何其他改變輸入元素的值:

$('#editPartyName').val(party.name) 

下面是使用jQuery Mobile的1.1.0演示:http://jsfiddle.net/VbAKL/

,這裏是使用jQuery演示Mobile 1.0B1:http://jsfiddle.net/VbAKL/1/

由於您是通過ID進行選擇,並且DOM中可能同時存在多個ID實例,所以很有可能會創建此問題。 jQuery Mobile網站一次可以在DOM中包含多個「僞網頁」,並且如果每個網頁中的元素的編號爲#header,那麼當您嘗試運行#header的選擇時,只會返回第一個實例。所以你的$('...').val(...)函數調用可能正在工作,而不是正確的元素。

簡答:使用jQuery Mobile時,請確保您的ID在您網站的所有頁面中都是唯一的。

+0

謝謝你的提問,我試過了你的建議,但它不起作用......我不知道你是否熟悉簡單的對話框插件,但我正在創建原始的HTML(這是我聲明我的輸入字段的地方)並將其放入模態屏幕中。輸入字段顯示正確,但我有我上面提到的錯誤。當我把你給我的代碼放在同一個監聽器上時(點擊聲明模式的html並觸發它),它實際上會在$('#editPartyName')之後終止所有執行。textinput('refresh');我不知道發生了什麼...... – user906824

+0

jQuery Mobile文檔沒有提及.textinput()方法。無論如何,我嘗試了它,並得到了「沒有這樣的方法'刷新'的文本輸入小部件實例」 –

+0

@MaffooClock http://jquerymobile.com/demos/1.1.0/docs/forms/textinputs/methods.html。試試這個鏈接,它描述了'.textinput()'方法。我原來的答案中的鏈接是jQuery Mobile 1.0的第一個Beta版本。 – Jasper

12

我也遇到過這個問題。我可以用$('#some_id').val('foobar')設置文本輸入的值,然後用console.info($('#some_id').val());將值打印到控制檯,但在瀏覽器中,文本輸入爲空。

經過一段時間,我發現$('input[id=some_id]').val('foobar')按預期工作。所以,顯然,jQuery通過ID引用一個元素有一些奇怪的錯誤。

+2

如果您使用的是ID,請確保它是唯一的整個網站,因爲jQuery Mobile僞頁面存儲在同一個DOM中。所以如果你想在一個頁面上選擇'#header',它可能會在另一個頁面上選擇'#header'(使用ID,第一個找到的會被返回,其餘的被忽略)。 – Jasper

+0

在我的情況下,沒有重複的ID。 –

+0

這是Jquery的一個瘋狂的怪癖。謝謝一堆 –