ページがロードされたときに、特定のクラスを持つすべての html フィールドに Cookie 値を直接ロードしたいと考えています。フィールドの ID と同じ名前で作成された Cookie があります。
これを行うとうまくいきません。
$(".class").val(function(){
el=$(this);
id=el.attr("id");
cookie_val=$.cookie(id);
el.val(cookie_val);
});
何か案が?
関数をjQueryの.val()メソッドに渡す場合、目的の値が関数によって返される必要があります。
コードが立っているとき、値を設定する関数が実行されています。次に、を返しますがundefined、これにより空に設定されます。
これは機能するはずです:
$('.class').val(function () {
return $.cookie($(this).attr('id'));
});
.each()または、次を返すことなく、関数に値の設定を行わせるために使用することもできます。
$('.class').each(function () {
var el = $(this);
el.val($.cookie(el.attr('id')));
});
FWIW、私はこの機能のためのjQueryプラグインを提供するCookieライブラリを作成しました(同じ名前のCookieが保持する値をフィールドに入力します)。
ここで、パラメータ/cookienameと戻り値を送信できる関数
function findnameGetvalue(n){
a = document.cookie;
while(a != ''){
cookiename = a.substring(0,a.search('='));
cookievalue = a.substring(a.search('=')+1,a.search(';'));
if(cookievalue == cookiename+'='){
cookievalue = a.substring(a.search('=')+1,a.length);
}
if(cookiename == n){ // if found return value
return cookievalue;
}
i = a.search(';');
if(i == -1){ // not found do stuff
i = a.length
}
else{
i += 2;
}
a = a.substring(i,a.length);
}
}