2013-12-07 14 views
10

Web sitesini tamamladıktan sonra web sayfasını tamamladıktan sonra geçmişten beri hile ile güncelleştirmek zorunda olduğum web sayfasının tamamlanmasından sonra karşılaştım (basit metinle formları içeren girişleri - işte sorun - Değerlerini alamıyorlar, çünkü değerleri val() ile değil, attr() - yalan) ile ayarlanmışlardır. BenNeden jQuery val() işlevi 'value' özniteliğini güncellemiyor?

$('#xxx').attr('value', 'someValue'); 

veya bu atlamasına bazı umut var için

$('#xxx').val('someValue'); 

tüm javascript değiştirmek zorunda ediliyorum?

Oldukça önemsiz bir örnek here. İletişim kutusunda görebileceğiniz gibi, numaralı öznitelik html kodunda ayarlanmamıştır.

+0

Hangi HTML öğesiyle uğraşıyorsunuz? Bir girdi ya da farklı bir şey (bir textarea gibi)? –

+0

Evet, basit metin girişleri. –

+0

@AlexeiLevenkov örnekle güncellendi. –

cevap

15

Bu kurs yüzden niteliğini değiştirmez değerini elemanı

element.property_to_set = 'new_value'; 

ait özelliğini setleri arasında, o olacağını yatan yerli element.value = 'someValue' kullanır ne olduğunu

element.setAttribute('value', 'someValue') 

attr() dahili olarak, prop() ise, val() gibi özellikleri değiştirir.
Mülkte değişiklik yapmasının nedeni, mülkün formda kullanılmakta olan bir şey olmasıdır ve normalde javascript içinde de değeri almak için kullanılan şeydir, bu nedenle özellik ile uğraşmak mantıklı değildir. öznitelik, öznitelik normalde yalnızca öğenin başlangıç ​​değerini ayarlamak için kullanılır ve özniteliği daha sonra javascript ile değiştirmek, sahip olduğunuzla ilgili tersi sorun olan özelliği güncelleştirmez ve tüm bunları etkiler. form gönderir ve önemli bir sorun olur.

+0

Şimdi, attr/val/prop'in her birinin ne yaptığını anlıyorum, fakat kodumu nasıl değiştirebilirim? Çünkü html kodunu yakalayıp gerektiğinde geri yüklemem gerekiyor. Şu anda benim değerlerim kaybolur :( –

+0

Btw, input 'type =" hidden "' içeriyorsa neden farklı davranır? –

+0

Özniteliği ve özelliği değiştirmek için val() yöntemini her zaman yeniden yazabilir ve jQuery'den sonra bunu ekleyebilirsiniz. ama kendi senaryonuzdan önce, böylelikle bu şekilde çalışacaktı, işte nasıl yapılacağını -> http://jsfiddle.net/kZsdm/ – adeneo

İlgili konular