2013-02-15 22 views
5

Girdi kutusundan düzenleme yaptıktan sonra değer özniteliği html giriş etiketinde nasıl çalışır?HTML giriş değeri özniteliği - aynı giriş, (görünüşte) farklı sonuçlar

örnek:

<input type="text" name="test" id="test" value="Hello world" /> 

Bu metinde "Merhaba dünya" ile bir giriş kutusu gösterecektir. Ben render metin (değil çiğ kodu aracılığıyla) yeni bir dize inputing düzenleyin ve ardından doğru, bu

alert(document.getElementById('test').value) 

Ben olacak gibi js kullanarak yaptığı değerini elde etmeye çalışmak ise YENİ değeri olsun. Ancak, elemanı krom geliştirici araçları (veya ateşböceği veya tercih ettiğiniz herhangi bir şey) aracılığıyla incelediğimde, aynı "Merhaba dünya" dizesini başlangıçta olduğu gibi göreceğim ..

İkiden hangisi doğru? bir? js değeri veya krom denetçisi? Ben, nerede bir kullanıcı girebilir X girişler etiketi içeren bir tablo var Klasik dükkan durum:

İşte Example Fiddle var ve burada bu soruna bir çözüm bulmaya çalışan bu süre kadar geldi enter image description here

bir ekran görüntüsü var X öğelerin miktarı. Her girişin bir önceki değerinden beri bir veya daha fazla değerin değişip değişmediğini kontrol etmem gerekiyor: OLD ve NEW val arasındaki değer değiştiğinde, değer değiştiyse, siparişi güncellemem gerekiyor. Aksi takdirde kaydetme/güncelleme yapmaya gerek yoktur.

Attr kullanabileceğimi düşündüm. Girişin "eski" değerini saklamak için "değer", ancak muhtemelen en iyi seçim değildi ..

Bu davranışı herkes açıklayabilir mi? Sadece bir "yenileme" sorunu mu yoksa arkasında başka bir şey mi var?

cevap

8

Her ikisi de doğru, sadece farklı şeyler gösteriyorlar.

DOM valuemülkiyet

size akım değerini verir.

HTML valuenitelik size varsayılan değer (DOM defaultValueözelliği aynı) verir.

Chrome DOM denetçisi, HTML görünümündeki özellik değerlerini gösterir. Mülk değerlerini görmek için mülk görünümüne bakmanız gerekir.

Screen shot of Chrome property view

1

Sen girişine sözde tescilli niteliğini atayabilirsiniz; Örneğin, "eskival", daha sonra bu değeri

+3

Varsayılan olarak "defaultValue" gelirse neden rahatsız olabilirsiniz? – Quentin

5

ile karşılaştırabilirsiniz. Bu article numaralı telefonu bulabilirsiniz.

html'de görünen değer, formun yüklü olduğu varsayılan değerdir. Eğer DOM'ın da güncellenmesini istiyorsanız o zaman ele.setAttribute ("value", "new value") değerini kullanmanız gerekir.

Bir öğenin değiştirilip değiştirilmediğini öğrenmek istiyorsanız, en iyi bir onchange olayı eklemek Girdi öğelerini işaretleyin ve form değiştirilip değiştirilmediğini öğrenmek için değişiklik işleyicisindeki bazı işaretçileri işaretleyin.

+0

mmm giriş kutusunda aynı değeri girsem bile onchange patlayacaktır. Doğru muyum? – BeNdErR

+0

Evet. Bu doğru. –

+0

Genel olarak uygulamalarımızda, giriş değeri için bir değerle başlattığımız basit bir sınıf oluştururuz. Sınıf, giriş elemanının oluşturulmasından sorumludur ve olaylarını dinler ve değişiklik olayını yakaladığında, değerin gerçekte başlatılmış değeri önbelleğe aldığından değiştirilip değiştirilmediğini kontrol edebilir. Bunun gereksinimlerinizi karmaşık hale getirdiğini düşünüyorsanız, bir dizi veya değer listesi tutabilirsiniz, bunu giriş öğelerine eşleştirin ve dizide depolanan değere göre denetim gerçekleştirebilirsiniz. Her iki şekilde de js manipülasyonuna ihtiyacınız olacak –

İlgili konular