3

locEmailMsg というテキスト入力フィールドがあります。

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

この$(document).ready()関数では、いくつかのことを行う必要があります。入力の値を設定し、data-placeholder 属性を設定し、phColor クラスを削除します。

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

data-placeholder 属性は正しく設定されていますが (Firebug で監視)、値が設定されておらず、クラスも削除されていません。一部が機能するのに、他の部分が機能しないのはなぜですか?

これは非常に大規模なシステムの一部ですが、ページの読み込み時にすべてのスクリプトを実行しましたが、この呼び出しの後、値セット/クラスの削除を元に戻すようなことは何もありません。

4

2 に答える 2

4

ここでは、コードをそのまま使用できます。

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

ただし、同じ ID を持つ項目が再度発生した場合、最初の項目のみが影響を受けます。ここを参照してください:

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

入力かどうかは関係ありません。ID は一意である必要があります。

タイムアウトに入れたので、変化がわかります

window.setTimeout(function() {
    var localStorage = { email: 'foo@bar.com' };

    $('#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);
});
​
于 2012-10-23T20:30:07.033 に答える
2

あなたのコードは正常に見え、正常に動作するはずです.それが機能しない場合は、その行にバグを引き起こしている可能性のある他の問題があるはずです..

失敗している場所を確認するために、次のことを試みます。

  1. console.logまたはalertlocalStorage.emailが適切かどうかを確認します。
  2. document.getElementById('locEmailMsg').value = localStorage.email;jQuery の問題ではないことを確認してください。
于 2012-10-23T21:53:00.983 に答える