2011-08-24 22 views
27

html5 input[type=text] तत्वों पर प्लेसहोल्डर विशेषता का समर्थन करता है, लेकिन मुझे गैर-अनुपालन वाले ब्राउज़र को संभालने की आवश्यकता है। मुझे पता है कि प्लेसहोल्डर के लिए वहां एक हजार प्लगइन हैं लेकिन मैं 1001 वें बनाना चाहता हूं।jquery: कस्टम विशेषता का मान प्राप्त करें

मैं input[placeholder] तत्व पर एक संभाल पाने में सक्षम हूं लेकिन प्लेसहोल्डर विशेषता का मान प्राप्त करने का प्रयास अपरिभाषित - $("input[placeholder]").attr("placeholder") लौटा रहा है।

मैं jquery 1.6.2 का उपयोग कर रहा हूं।

यहां jsfiddle है। मैंने कोड को उस ब्राउज़र में काम करने के लिए संशोधित किया है जो परीक्षण उद्देश्यों के लिए एचटीएमएल 5 संगत है।

एचटीएमएल

<input type="text" name="email" size="10" placeholder="EMAIL ADDRESS"> 

jQuery

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

$(document).ready(function(){ 
    if(!SupportsInputPlaceholder()) { 
     //set initial value to placeholder attribute 
     $("input[placeholder]").val($("input[placeholder]").attr("placeholder")); 

     //create event handlers for focus and blur 
     $("input[placeholder]").focus(function() { 
      if($(this).val() == $(this).attr("placeholder")) { 
       $(this).val(""); 
      } 
     }).blur(function() { 
      if($(this).val() == "") { 
       $(this).val($(this).attr("placeholder")); 
      } 
     }); 
    } 
}); 

किसी भी और सभी मदद के लिए धन्यवाद, बी

उत्तर

38

आप यहाँ यात्रा के कुछ फार्म की आवश्यकता है, val के रूप में (जब एक समारोह के साथ कहा जाता है को छोड़कर) केवल पहले तत्व पर काम करता है:

$("input[placeholder]").val($("input[placeholder]").attr("placeholder")); 

होना चाहिए:

$("input[placeholder]").each(function() { 
    $(this).val($(this).attr("placeholder")); 
}); 

या

$("input[placeholder]").val(function() { 
    return $(this).attr("placeholder"); 
}); 
+2

चाहेंगे नहीं '$ (" इनपुट [प्लेसहोल्डर] ") .val (फ़ंक्शन() {वापसी $ (यह) .attr (" प्लेसहोल्डर "); }); बेहतर हो? –

+0

धन्यवाद डेनिस। जब मैंने प्रत्येक पर ब्रेकपॉइंट सेट किया तो मैंने पाया कि यह फ़ंक्शन में प्रवेश भी नहीं कर रहा है, जैसे कि उस चयनकर्ता से मेल खाने वाले किसी तत्व को नहीं ढूंढ रहा है। लेकिन जब मैंने $ ("इनपुट [प्लेसहोल्डर]" पर एक घड़ी डाली)। वैल() मैं देखता हूं "" और यदि मैं तत्व को प्रारंभिक मान देता हूं तो मुझे मान दिखाई देगा। – bflemi3

+0

@ रिचर्ड हाँ, यह थोड़ा बेहतर है। शायद बहुत ज्यादा अंतर नहीं सोचा। bflemi3, आप किस ब्राउज़र का उपयोग कर रहे हैं? आपका कोड क्रोम और आई 77 – Dennis

1

तुम भी ऑनक्लिक ईवेंट के साथ समारोह को पारित करके ऐसा कर सकते हैं

<a onlick="getColor(this);" color="red"> 

<script type="text/javascript"> 

function getColor(el) 
{ 
    color = $(el).attr('color'); 
    alert(color); 
} 

</script> 
संबंधित मुद्दे