2011-07-03 15 views
8

HTML5'in yer tutucu özniteliğini kullanmak istiyorum (Thought Results adresindeki haber bültenindeki katmanda görebilirsiniz). Ancak eski tarayıcıları kullandığımda, hiçbir şey yapmıyorlar. Onu taklit etmek için JavaScript kullanabilirim, ama sonra kullanmamalıyım ve eski yoldan yapılmış. Hem HTML5 yer tutucu özniteliğine nasıl sahip olabilirim hem de eski tarayıcılar için bunu nasıl taklit edebilirim? Bir tarayıcı özelliğini destekliyorsaHTML5 yer tutucu özniteliği geriye dönük uyumluluk göz önünde bulundurularak nasıl kullanılır?

cevap

9

Sen algılayabilir:

http://diveintohtml5.info/detect.html#input-placeholder

function supports_input_placeholder() { 
    var i = document.createElement('input'); 
    return 'placeholder' in i; 
} 

o hiçbir şey yoksa. Aksi takdirde, yer tutucu değerini almak için JS'yi kullanabilir ve ardından uygun gördüğünüz alana (belki varsayılan değer olarak) alana ekleyebilir ve ardından HTML5 yer tutucu davranışlarını simüle etmek için uygun etkileşimleri ekleyebilirsiniz.

+1

Bu çalıştı. Ben sadece '' geri 'yer tutucu' 'i anlamadım. Teknik olarak ne yapıyor? Ne demek? –

+2

'in' operatörü, bir nesnenin (bu durumda bir' HTMLInputElement' nesnesinin) belirli bir özelliği olup olmadığını sınar. "Yer tutucu" özelliğini uygulayan tarayıcılar da "yer tutucu" özelliğini "HTMLInputElement" arayüzüne eklediğinden, bu "yer tutucu" için etkili bir destek testidir. – Domenic

+0

@Diogo sizin düzenlemeniz tamamen yeni bir cevaptır. Bu cevabı düzenlemek yerine lütfen yeni bir tane oluşturun. –

6

@marcgg, temel olarak onu desteklemeyen tarayıcıların yer tutucu işlevlerini çoğaltan büyük bir JQuery yer tutucu eklentisi yazdı.

https://github.com/marcgg/Simple-Placeholder

Bu konuda yerleşmeden önce tutucu eklentileri bir çok ile aranır ve şimdiye kadar iyi çalışıyor. Başlangıçta bu benzer soruya cevap olarak buldum: Bu özelliği algılamak için Modernizr kullanılması önerilir

https://stackoverflow.com/questions/5120257/what-is-the-best-html5-placeholder-like-jquery-plugin-out-there

1

.

if (Modernizr.input.placeholder) { 
    // your placeholder text should already be visible! 
} else { 
    // no placeholder support :(
    // fall back to a scripted solution 
} 

Bu kütüphaneyi kullanmakla ilgilenmiyorsanız, aşağıdaki kodu kullanabilirsiniz.

function supports_input_placeholder() { 
    var i = document.createElement('input'); 
    return 'placeholder' in i; 
} 

Eğer StackOverflow burada aslına vardı Simple Placeholder, kullanabilirsiniz jQuery kullanıyorsanız, destek özelliklerden kaçınarak göreceği söylenebilir.