2012-10-20 14 views
5

यदि आपके पास टेक्स्ट इनपुट फ़ील्ड है जिसमें "मान" संपत्ति है, तो प्लेसहोल्डर विशेषता (प्लेसहोल्डर टैग, "डिफ़ॉल्ट" और समान दृष्टिकोण) जोड़ने का कोई तरीका नहीं है। खाली?यदि "मान" फ़ील्ड खाली है तो प्लेसहोल्डर विशेषता को कैसे जोड़ें

मैंने यहां कई समान प्रश्न देखे हैं, लेकिन उनमें से अधिकांश डिफ़ॉल्ट रूप से उपयोग करते हैं। मुझे प्लेसहोल्डर टैग की आवश्यकता है और इसके अतिरिक्त मैं HTML आउटपुट को बिल्कुल प्रभावित नहीं कर सकता।

यह दिया गया HTML उत्पादन उदाहरण है:

<input type="text" value="" name="textbox" id="edit-textbox"> 
+0

http://jsfiddle.net/gT7dv/ –

+0

@RPM यह बहुत आसान होगा, ऐसा नहीं है? :) मैंने लिखा है कि मैं HTML आउटपुट को प्रभावित नहीं कर सकता। यह मेरे पास कोड है और मुझे jQuery – take2

+0

के साथ प्लेसहोल्डर विशेषता जोड़नी है, यह HTML आउटपुट को बिल्कुल प्रभावित नहीं करता है (प्लेसहोल्डर जोड़कर छोड़कर, जो आपको चाहिए, है ना ??)! लेकिन याद रखें कि यह HTML 5 के लिए है! – Robyflc

उत्तर

11

मैं निम्नलिखित तरीकों में से किसी भी एक सुझाव देंगे के लिए है।

JS Fiddle demo using el.placeholder = $('label[for=' + el.id + ']').text()

या आप विभिन्न प्लेसहोल्डर स्टोर करने के लिए एक सरणी इस्तेमाल कर सकते हैं:

var placeholders = ['Email address', 'favourite color']; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[i]; 
     } 
    });​ 

JS Fiddle demo

एक विशेष तत्व के लिए एक विशेष प्लेसहोल्डर निर्दिष्ट करने के लिए:

var placeholders = { 
    'one' : 'Email address', 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id]; 
     } 
    });​ 

JS Fiddle demo

जोड़ा घटना है कि एक प्रवेश प्लेसहोल्डर में मौजूद नहीं है में एक पकड़ने/फॉल-बैक एक विशेष input के लिए वस्तु:

var placeholders = { 
    'oe' : 'Email address', // <-- deliberate typo over there 
    'two' : 'Favourite color' 
}; 

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = placeholders[el.id] || ''; 
     } 
    });​ 

JS Fiddle demo

+0

मैंने दोनों सुझावों के साथ प्रयास किया है, लेकिन यह काम नहीं किया है ... आप यहां बेवकूफ की जांच कर सकते हैं: http://jsfiddle.net/U2YZx – take2

+0

आपको उस कोड में काम करने के लिए एक वास्तविक लेबल तत्व होना चाहिए। आपके पास कोई नहीं है, इसलिए यह काम नहीं करता है। –

+0

शानदार, धन्यवाद! हालांकि इस कोड के बारे में एक प्रश्न - आप कैसे संदर्भित करते हैं कि कौन सा टेक्स्ट बॉक्स प्रभावित होना चाहिए, i। ई। मैं सटीक इनपुट बॉक्स को कैसे लक्षित कर सकता हूं (इस मामले में #textbox के साथ)? – take2

4

आप एचटीएमएल 5 का उपयोग कर रहे हैं (और आप चाहिए) वहाँ एक देशी प्लेसहोल्डर विशेषता है तो।

<input type="text" value="" placeholder="My placeholder!" name="textbox" id="edit-textbox"> 

संपादित

जैसा कि आपने कहा है कि आप HTML संपादित नहीं कर सकते और जे एस का उपयोग करने के लिए है, यह मदद मिल सकती है।

$ ('# संपादित करें-टेक्स्टबॉक्स')। Attr ('प्लेसहोल्डर', 'मेरा प्लेसहोल्डर!');

$('input:text').each(
    function(i,el) { 
     if (!el.value || el.value == '') { 
      el.placeholder = 'placeholdertext'; 
      /* or: 
      el.placeholder = $('label[for=' + el.id + ']').text(); 
      */ 
     } 
    }); 

JS Fiddle demo using el.placeholder = 'placeholdertext':

एक बार फिर, इस HTML 5.

+0

यह भी काम करता है, धन्यवाद! हालांकि डेविड पहले व्यक्ति थे, इसलिए मैंने उनका जवाब स्वीकार कर लिया है। – take2

+0

ठीक है! बस ध्यान दें कि हमारे उत्तर बिल्कुल अलग हैं और विभिन्न चीजों का कारण बनते हैं। आपका प्रश्न था: "प्लेसहोल्डर विशेषता कैसे जोड़ें" और एक मान विशेषता सेट करना (जैसा कि उसके उत्तर में है) बिल्कुल वैसा ही नहीं है। – Robyflc

+0

मैंने फ़ायरबग के साथ अपना कोड चेक किया है, और प्लेसहोल्डर टेक्स्ट प्लेसहोल्डर विशेषता के रूप में प्रदर्शित होता है, इसलिए यह मेरे प्रश्न का उत्तर होगा। – take2

0
(function($) { 

    $('#edit-textbox').attr('placeholder','Your placeholder text'); 

})(jQuery); 
संबंधित मुद्दे