2010-10-14 5 views
47

मैं मेरा एक साइट के लिए एक सरल प्लेसहोल्डर jQuery प्लगइन लेकिन निश्चित रूप से मैं केवल समारोह आग अगर देशी प्लेसहोल्डर विशेषता समर्थित नहीं है चाहते हैं ...ब्राउज़र का मूल प्लेसहोल्डर विशेषता का समर्थन करने का परीक्षण कैसे करें?

मैं jQuery का उपयोग कैसे परीक्षण करने के लिए कर सकते हैं लिखने के लिए कोशिश कर रहा हूँ प्लेसहोल्डर विशेषता के मूल समर्थन के लिए? http://www.modernizr.com/

और फिर ऐसा करने के:

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

Modernizr लगभग सभी एचटीएमएल 5 कार्यक्षमता के लिए ब्राउज़र के समर्थन के परीक्षण के लिए वास्तव में आसान है

+0

लिंक के लिए धन्यवाद। उत्कृष्ट संसाधन – Jannis

+2

@hellvinz द्वारा प्रदान किया गया लिंक दुख की बात है अब 410 चला गया है। यहां एक अद्यतन दर्पण है: http://diveinto.html5doctor.com/detect.html#input-placeholder – Binarytales

उत्तर

93

आप आपके द्वारा लिखी गई जावास्क्रिप्ट के शीर्ष पर इस डालने से काफी आसानी से $.support को जोड़ सकते हैं:

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

तब आप अपने कोड में या तो $.support.placeholder या jQuery.support.placeholder उपयोग कर सकते हैं कहीं भी।

एनबी यह कोड diveintohtml5 से अनुकूलित है, ऊपर दिए गए लिंक द्वारा hellvinz द्वारा प्रदान किया गया लिंक।

+0

यह शानदार और बिल्कुल वही है जो मैं ढूंढ रहा था। धन्यवाद। पीएस: लिंक, महान संसाधन के लिए धन्यवाद। * बुकमार्क किया गया! * – Jannis

+0

लिंक के लिए, मुझे नहीं, hellvinz धन्यवाद! और भी, प्लगइन बनाने के लिए यह छोटा होगा जो सभी मॉडर्निज परीक्षणों को '$ .support' पर आयात करता है। एक त्वरित परीक्षण से पता चलता है कि यह एक बार खनन के बाद एक 11kb फ़ाइल होगी। – lonesomeday

+0

भले ही मैं परीक्षण करना चाहता हूं, फॉर्म कार्यक्षमता है? – Jannis

15

Modernizr पुस्तकालय, जिसे आप यहां प्राप्त कर सकते हैं का प्रयोग करें।

+0

आपके उत्तर के लिए धन्यवाद। मैं पहले से ही अपने दस्तावेज़ में मॉडर्नइज़र का उपयोग कर रहा हूं, हालांकि इस प्लगइन के लिए सभी साइटों पर काम करने के लिए मैं पाठ्यक्रम के jQuery के अलावा अन्य बाहरी पुस्तकालयों जैसे मॉडर्निज़र पर भरोसा नहीं करना चाहता हूं। मेरे वर्तमान पृष्ठ पर जो मैं इसे बना रहा हूं, वास्तव में बहुत अच्छा काम करता है, लेकिन केवल सामान्य संगतता के लिए मैं मॉडर्निजर पर निर्भर नहीं हूं। – Jannis

3

placeholder संपत्ति सभी ब्राउज़रों में INPUT DOM ऑब्जेक्ट्स पर मौजूद है, भले ही प्लेसहोल्डर विशेषता HTML INPUT तत्व पर परिभाषित की गई हो या नहीं।

सही तरीका है:

var Modernizr = {}; 
// Create the input element for various Web Forms feature tests. 
var inputElem = document.createElement('input'), attrs = {};  
Modernizr.input = (function(props) { 
    for(var i = 0, len = props.length; i < len; i++) { 
     attrs[props[i]] = props[i] in inputElem; 
    } 
    return attrs; 
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); 

if(!Modernizr.input.placeholder) { 
    // Do something. 
} 
4

मैं इस तरह के एक साधारण क्लास होने की तरह है ...

var Browser = { 
    Can: { 
    Placeholder: function() { 
     return 'placeholder' in document.createElement('input'); 
    } 
    } 
} 

... ताकि आप आसानी से आपके ब्राउज़र प्लेसहोल्डर विशेषता का समर्थन करता है, तो जांच कर सकते हैं।

if (Browser.Can.Placeholder()) { 

} 
+2

पर्याप्त jQuery नहीं है। – twistedpixel

+0

@twistedpixel - यह एक मजाक है, है ना? – WoIIe

+4

@Wolle $ ('# yourComment')। ('हां') – twistedpixel

संबंधित मुद्दे