यह क्रोम को छोड़कर प्रत्येक ब्राउज़र के लिए स्वचालित रूप से किया जाता है ।
मैं अनुमान लगा रहा हूं कि मुझे विशेष रूप से Chrome को लक्षित करना है ।
कोई उपाय?
यदि CSS के साथ नहीं है , तो jQuery के साथ ?
सधन्यवाद।
यह क्रोम को छोड़कर प्रत्येक ब्राउज़र के लिए स्वचालित रूप से किया जाता है ।
मैं अनुमान लगा रहा हूं कि मुझे विशेष रूप से Chrome को लक्षित करना है ।
कोई उपाय?
यदि CSS के साथ नहीं है , तो jQuery के साथ ?
सधन्यवाद।
जवाबों:
<input
type="text"
placeholder="enter your text"
onfocus="this.placeholder = ''"
onblur="this.placeholder = 'enter your text'" />
संपादित करें: सभी ब्राउज़र अब समर्थन करते हैं
input:focus::placeholder {
color: transparent;
}
<input type="text" placeholder="Type something here!">
फ़ायरफ़ॉक्स 15 और IE 10+ भी अब इसका समर्थन करता है। केसी चू के सीएसएस समाधान पर विस्तार करने के लिए :
input:focus::-webkit-input-placeholder { color:transparent; }
input:focus:-moz-placeholder { color:transparent; } /* FF 4-18 */
input:focus::-moz-placeholder { color:transparent; } /* FF 19+ */
input:focus:-ms-input-placeholder { color:transparent; } /* IE 10+ */
@ हेक्सोडस और @ कैसी चू के उत्तरों पर आधारित, यहां एक अद्यतन और क्रॉस-ब्राउज़र समाधान है जो प्लेसहोल्डर पाठ को फीका करने के लिए सीएसएस अस्पष्टता और संक्रमण का लाभ उठाता है। यह किसी भी तत्व के लिए काम करता है जो प्लेसहोल्डर्स, सहित textarea
और input
टैग का उपयोग कर सकता है ।
::-webkit-input-placeholder { opacity: 1; -webkit-transition: opacity .5s; transition: opacity .5s; } /* Chrome <=56, Safari < 10 */
:-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 4-18 */
::-moz-placeholder { opacity: 1; -moz-transition: opacity .5s; transition: opacity .5s; } /* FF 19-51 */
:-ms-input-placeholder { opacity: 1; -ms-transition: opacity .5s; transition: opacity .5s; } /* IE 10+ */
::placeholder { opacity: 1; transition: opacity .5s; } /* Modern Browsers */
*:focus::-webkit-input-placeholder { opacity: 0; } /* Chrome <=56, Safari < 10 */
*:focus:-moz-placeholder { opacity: 0; } /* FF 4-18 */
*:focus::-moz-placeholder { opacity: 0; } /* FF 19-50 */
*:focus:-ms-input-placeholder { opacity: 0; } /* IE 10+ */
*:focus::placeholder { opacity: 0; } /* Modern Browsers */
संपादित करें: आधुनिक ब्राउज़रों का समर्थन करने के लिए अपडेट किया गया।
क्या आपने प्लेसहोल्डर अटर की कोशिश की है?
<input id ="myID" type="text" placeholder="enter your text " />
-EDIT-
मैं देखता हूं, फिर यह प्रयास करें:
$(function () {
$('#myId').data('holder', $('#myId').attr('placeholder'));
$('#myId').focusin(function () {
$(this).attr('placeholder', '');
});
$('#myId').focusout(function () {
$(this).attr('placeholder', $(this).data('holder'));
});
});
टेस्ट: http://jsfiddle.net/mPLFf/4/
-EDIT-
दरअसल, चूंकि प्लेसहोल्डर का उपयोग मूल्य का वर्णन करने के लिए किया जाना चाहिए, न कि इनपुट के नाम पर। मैं निम्नलिखित विकल्प सुझाता हूं
एचटीएमएल:
<label class="overlabel">
<span>First Name</span>
<input name="first_name" type="text" />
</label>
जावास्क्रिप्ट:
$('.overlabel').each(function () {
var $this = $(this);
var field = $this.find('[type=text], [type=file], [type=email], [type=password], textarea');
var span = $(this).find('> span');
var onBlur = function () {
if ($.trim(field.val()) == '') {
field.val('');
span.fadeIn(100);
} else {
span.fadeTo(100, 0);
}
};
field.focus(function () {
span.fadeOut(100);
}).blur(onBlur);
onBlur();
});
सीएसएस:
.overlabel {
border: 0.1em solid;
color: #aaa;
position: relative;
display: inline-block;
vertical-align: middle;
min-height: 2.2em;
}
.overlabel span {
position: absolute;
left: 0;
top: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.overlabel span, .overlabel input {
text-align: left;
font-size: 1em;
line-height: 2em;
padding: 0 0.5em;
margin: 0;
background: transparent;
-webkit-appearance: none; /* prevent ios styling */
border-width: 0;
width: 100%;
outline: 0;
}
परीक्षा:
@ केसी-चू और समुद्री डाकू लूट के जवाब को बढ़ाने के लिए, यहां एक अधिक क्रॉस ब्राउज़र संगत तरीका है:
/* WebKit browsers */
input:focus::-webkit-input-placeholder { color:transparent; }
/* Mozilla Firefox 4 to 18 */
input:focus:-moz-placeholder { color:transparent; }
/* Mozilla Firefox 19+ */
input:focus::-moz-placeholder { color:transparent; }
/* Internet Explorer 10+ */
input:focus:-ms-input-placeholder { color:transparent; }
opacity:0;
)! सभी संभव ब्राउज़र समर्थन के साथ इस धागे में एकमात्र सीएसएस समाधान!
टोनी का जवाब अच्छा है, लेकिन मैं इसके बजाय ID
स्पष्ट रूप से उपयोग छोड़ देता हूं input
, इस तरह से सभी इनपुट placeholder
व्यवहार प्राप्त करते हैं:
<input type="text" placeholder="your text" />
ध्यान दें कि $(function(){ });
इसके लिए आशुलिपि है $(document).ready(function(){ });
:
$(function(){
$('input').data('holder',$('input').attr('placeholder'));
$('input').focusin(function(){
$(this).attr('placeholder','');
});
$('input').focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
})
मुझे नाम स्थान में इसे पैकेज करना और "प्लेसहोल्डर" विशेषता के साथ तत्वों पर चलाना पसंद है ...
$("[placeholder]").togglePlaceholder();
$.fn.togglePlaceholder = function() {
return this.each(function() {
$(this)
.data("holder", $(this).attr("placeholder"))
.focusin(function(){
$(this).attr('placeholder','');
})
.focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
});
};
कभी-कभी आपको यह सुनिश्चित करने के लिए विशिष्टता की आवश्यकता होती है कि आपकी शैलियों को सबसे मजबूत कारक id
के साथ लागू किया जाए। उनके शानदार जवाब के लिए @ रोब फ्लेचर के लिए धन्यवाद, हमारी कंपनी में हमने उपयोग किया है
तो कृपया ऐप कंटेनर की आईडी के साथ उपसर्गों को जोड़ने वाली शैलियों पर विचार करें
#app input:focus::-webkit-input-placeholder, #app textarea:focus::-webkit-input-placeholder {
color: #FFFFFF;
}
#app input:focus:-moz-placeholder, #app textarea:focus:-moz-placeholder {
color: #FFFFFF;
}
प्योर सीएसएस के साथ इसने मेरे लिए काम किया। इनपुट में दर्ज / फ़ोकस होने पर इसे पारदर्शी बनाएं
input:focus::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: transparent !important;
}
input:focus::-moz-placeholder { /* Firefox 19+ */
color: transparent !important;
}
input:focus:-ms-input-placeholder { /* IE 10+ */
color: transparent !important;
}
input:focus:-moz-placeholder { /* Firefox 18- */
color: transparent !important;
}
आगे वालेस सिधारे के कोड नमूने को परिष्कृत करने के लिए :
$(function()
{
$('input').focusin(function()
{
input = $(this);
input.data('place-holder-text', input.attr('placeholder'))
input.attr('placeholder', '');
});
$('input').focusout(function()
{
input = $(this);
input.attr('placeholder', input.data('place-holder-text'));
});
})
यह सुनिश्चित करता है कि प्रत्येक इनपुट डेटा विशेषता में सही प्लेसहोल्डर पाठ संग्रहीत करता है।
JsFiddle में यहां एक कार्यशील उदाहरण देखें ।
मुझे संक्रमण के साथ सीएसएस दृष्टिकोण पसंद है। फोकस पर प्लेसहोल्डर फीका हो जाता है;) टेक्स्टारिस के लिए भी काम करता है।
महान विचार के लिए @Casey चू धन्यवाद।
textarea::-webkit-input-placeholder, input::-webkit-input-placeholder {
color: #fff;
opacity: 0.4;
transition: opacity 0.5s;
-webkit-transition: opacity 0.5s;
}
textarea:focus::-webkit-input-placeholder, input:focus::-webkit-input-placeholder {
opacity: 0;
}
Http://bourbon.io/ के साथ SCSS का उपयोग करते हुए , यह समाधान सरल, सुरुचिपूर्ण और सभी वेब ब्राउज़र पर काम करता है:
input:focus {
@include placeholder() {
color: transparent;
}
}
Bourbon का उपयोग करें! यह आपके लिये अच्छा हॆ !
सीएसएस के इस टुकड़े ने मेरे लिए काम किया:
input:focus::-webkit-input-placeholder {
color:transparent;
}
शुद्ध सीएसएस आधारित समाधान के लिए:
input:focus::-webkit-input-placeholder {color:transparent;}
input:focus::-moz-placeholder {color:transparent;}
input:-moz-placeholder {color:transparent;}
नोट: सभी ब्राउज़र विक्रेताओं द्वारा अभी तक समर्थित नहीं है।
संदर्भ: Ilia Raiskin द्वारा सीएसएस के साथ फोकस पर प्लेसहोल्डर पाठ छिपाएँ।
2018> JQUERY v.3.3 समाधान: सभी इनपुट के लिए कार्यशील वैश्विकता , प्लेसहोल्डर के साथ textarea।
$(function(){
$('input, textarea').on('focus', function(){
if($(this).attr('placeholder')){
window.oldph = $(this).attr('placeholder');
$(this).attr('placeholder', ' ');
};
});
$('input, textarea').on('blur', function(){
if($(this).attr('placeholder')){
$(this).attr('placeholder', window.oldph);
};
});
});
डेमो यहाँ है: jsfiddle
इसे इस्तेमाल करे :
//auto-hide-placeholder-text-upon-focus
if(!$.browser.webkit){
$("input").each(
function(){
$(this).data('holder',$(this).attr('placeholder'));
$(this).focusin(function(){
$(this).attr('placeholder','');
});
$(this).focusout(function(){
$(this).attr('placeholder',$(this).data('holder'));
});
});
}
उपरोक्त सभी के अलावा, मेरे पास दो विचार हैं।
आप एक तत्व को जोड़ सकते हैं जो कि पालकी धारक की नकल करता है। फिर जावास्क्रिप्ट का उपयोग करके दिखाने और छिपने वाले तत्व को नियंत्रित करता है।
लेकिन यह इतना जटिल है, दूसरा भाई इस तरह से css.Just के भाई के चयनकर्ता का उपयोग कर रहा है:
.placeholder { position: absolute; font-size: 14px; left: 40px; top: 11px; line-height: 1; pointer-events: none; }
.send-message input:focus + .placeholder { display: none; }
23333, मेरे पास एक खराब अंग्रेजी है। आपकी समस्या का समाधान होगा।
इस फ़ंक्शन का प्रयास करें:
+ यह फोकस पर प्लेसहोल्डर छुपाता है और इसे वापस ब्लर पर लौटाता है
+ यह फ़ंक्शन प्लेसहोल्डर चयनकर्ता पर निर्भर करता है, पहले यह प्लेसहोल्डर विशेषता के साथ तत्वों का चयन करता है, फ़ोकसिंग पर एक फ़ंक्शन को ट्रिगर करता है और ब्लरिंग पर एक अन्य।
फ़ोकस पर: यह एक विशेषता "डेटा-टेक्स्ट" को उस तत्व में जोड़ता है जो प्लेसहोल्डर विशेषता से अपना मान प्राप्त करता है फिर यह प्लेसहोल्डर विशेषता के मूल्य को हटा देता है।
धुंधला होने पर: यह प्लेसहोल्डर मान को वापस करता है और इसे डेटा-टेक्स्ट विशेषता से हटा देता है
<input type="text" placeholder="Username" />
$('[placeholder]').focus(function() {
$(this).attr('data-text', $(this).attr('placeholder'));
$(this).attr('placeholder', '');
}).blur(function() {
$(this).attr('placeholder', $(this).attr('data-text'));
$(this).attr('data-text', '');
});
});
यदि आप देखते हैं कि इनपुट तत्व का निरीक्षण करके पर्दे के पीछे क्या हो रहा है, तो आप मुझे अच्छी तरह से फॉलो कर सकते हैं
यही बात मैंने कोणीय 5 में लागू की है।
मैंने प्लेसहोल्डर के भंडारण के लिए एक नई स्ट्रिंग बनाई
newPlaceholder:string;
तब मैंने इनपुट बॉक्स पर फ़ोकस और ब्लर फ़ंक्शंस का उपयोग किया है (मैं प्राइम एनसी ऑटोकॉम्पेल का उपयोग कर रहा हूं)।
टाइप प्लेसहोल्डर से ऊपर प्लेसहोल्डर सेट किया जा रहा है
दो कार्य जो मैं उपयोग कर रहा हूं -
/* Event fired on focus to textbox*/
Focus(data) {
this.newPlaceholder = data.target.placeholder;
this.placeholder = '';
}
/* Event fired on mouse out*/
Blur(data) {
this.placeholder = this.newPlaceholder;
}
किसी भी CSS या JQuery का उपयोग करने की आवश्यकता नहीं है। आप इसे HTML इनपुट टैग से ठीक कर सकते हैं।
उदाहरण के लिए , नीचे ईमेल बॉक्स में, प्लेसहोल्डर पाठ अंदर क्लिक करने के बाद गायब हो जाएगा और पाठ फिर से दिखाई देगा यदि बाहर क्लिक किया गया है।
<input type="email" placeholder="Type your email here..." onfocus="this.placeholder=''" onblur="this.placeholder='Type your email here...'">
/* Webkit */
[placeholder]:focus::-webkit-input-placeholder { opacity: 0; }
/* Firefox < 19 */
[placeholder]:focus:-moz-placeholder { opacity: 0; }
/* Firefox > 19 */
[placeholder]:focus::-moz-placeholder { opacity: 0; }
/* Internet Explorer 10 */
[placeholder]:focus:-ms-input-placeholder { opacity: 0; }