2010-12-10 11 views
3

属性を設定します。明示的な呼び出しの後でさえも、html()呼び出しがすべての属性を埋め込んだ要素を返さない場合は、JQueryのhtml()呼び出しはattr更新後に値を返しません

例えば、私は、テキストボックスを持っている:

<input type="text" id="foo" value="" /> 

ユーザがこのボックスの値で埋める場合、関数は、(入力テキストボックスのonBlurイベント)と呼ばれます。

function updateFoo(input) { 
    // force DOM update?? 
    $('#'+input.id).attr('value', input.value); 

    // successfully displays value user entered 
    alert($('#'+input.id).attr('value')); 

    // displays input element, with value not filled in, 
    // like: 'input type="text" id="foo" value="" />' 
    alert($('#'+input.id).parent().html()); 

    ... 
} 

は、HTML()value属性セットを持つ要素を返す呼び出すべきではありません。次のコードが存在し、その関数で

$('#foo').blur(function(event) { updateFoo(this); }); 

私はMax OSXでFirefox 3.6.13を使用しています。私はのオフに私の仮定のいくつかをベースhttp://forums.asp.net/t/1578929.aspx ...

おかげで、 ガレン私はこれがvalueを持っているという事実の副作用だと思う

答えて

4

あなたが何か他のものにattrを変更する場合は、newattrのように、それが正常に動作しますさらにいくつか、私はこのポストにまたがって走った:

jQuery html() in Firefox (uses .innerHTML) ignores DOM changes

私が抱えている問題をかなり要約しています。

$('#'+input.id).attr('value', input.value); 

私が今使っている:問題を解決し

input.setAttribute('value', input.value); // force DOM update 

基本的にはFirefoxの実装の問題...代わりの

です。

2

私はこのフォーラムのポストを見ました非常に特殊な使用。私は値がDOM自体の代わりにいくつかのローカルプロパティに格納されていると思います。研究した後、もちろん

http://jsfiddle.net/m9vWT/

value属性では役立ちません...

+0

ご回答いただきありがとうございます。はい、新しい属性がうまく更新されるようです。私は別の方法で問題を解決しました(この記事の私の答えを見てください) – Galen

関連する問題