2012-10-23 65 views
3

我有一個名爲locEmailMsg文本輸入字段:.VAL()沒有設定值

<input type="text" 
     class="phColor" 
     data-placeholder="Your email address" 
     maxlength="50" 
     style="font-size: 14px; width: 232px;" 
     id="locEmailMsg"> 

在我$(document).ready()功能,我需要做的幾件事情:設置輸入的值,設定數據 - 佔位符屬性,並刪除phColor類。

$('#locEmailMsg').val(localStorage.email); 
$('#locEmailMsg').attr('data-placeholder', localStorage.email); 
$('#locEmailMsg').removeClass('phColor'); 

數據佔位符屬性設置正確(在Firebug中觀看),但沒有設置該值,也沒有刪除該類。爲什麼一部分工作,但其他部分不起作用?

這是一個非常大的系統的一部分,但是我在頁面加載時已經遍歷所有的腳本,並且在調用這個值之後沒有任何事情發生。

+3

theres沒有可能的方式,你正在重複使用相同的ID是嗎? – thescientist

+0

嘗試使用'$('#locEmailMsg').val(localStorage.email).data('placeholder',localStorage.email).removeClass('phColor');' – asawyer

+0

也許與

回答

4

它適用於您的代碼,因爲您擁有它。

http://jsfiddle.net/bWm2c/1/

但是,如果具有相同ID的項目再次發生,只有第一個將受到影響。在這裏看到:

http://jsfiddle.net/bWm2c/2/

如果它是一個輸入與否沒關係。 ID必須是唯一的。

我把它放在一個超時,所以你可以看到的變化

window.setTimeout(function() { 
    var localStorage = { email: '[email protected]' }; 

    $('#locEmailMsg') 
     .val(localStorage.email) 
     .attr('data-placeholder', localStorage.email) 
     .removeClass('phColor'); 
}, 500); 
​ 

這裏是失敗的HTML(只對第一項)

<input type="text" 
     class="phColor" 
     data-placeholder="Your email address" 
     maxlength="50" 
     style="font-size: 14px; width: 232px;" 
     id="locEmailMsg" 
     value="novalue" /> 

<div id="locEmailMsg">dupid</div> 

<input type="text" 
     class="phColor" 
     data-placeholder="Your email address" 
     maxlength="50" 
     style="font-size: 14px; width: 232px;" 
     id="locEmailMsg" 
     value="novalue" /> 
​ 

這是唯一的辦法,我可以看到你的代碼不工作。

編輯

運行在專頁上,確保你沒有重複的ID

http://jsfiddle.net/bWm2c/4/

$('[id]').each(function(){ 
    var ids = $('[id="'+this.id+'"]'); 
    if(ids.length>1 && ids[0]==this) 
    alert('Multiple IDs #'+this.id); 
}); 
​ 
+0

感謝您花時間來試試這個。我知道ID必須是唯一的,而我的ID是唯一的。它沒有在其他地方使用。它仍然不起作用。 – EmmyS

+0

查看我的編輯,在頁面上運行該代碼,以確保您沒有重複的ID。 – CaffGeek

+2

@EmmyS,有沒有進一步的進展? – CaffGeek

1

你的代碼看起來很好,它應該很好地工作。如果它不工作,那麼必須有一些其他問題,可能是該線路的問題..

我會嘗試fo llowing以檢查它失敗,

  1. console.logalert看到localStorage.email的值,如果值是正確的。
  2. 嘗試document.getElementById('locEmailMsg').value = localStorage.email;以確保它不是jQuery問題。
+0

點2確認它是一個jQuery的問題。有用!但奇怪的是,它不是JQuery。這是瀏覽器緩存。當我清除歷史記錄時,jquery選擇器開始工作。 – Spock