除Chrome之外的所有浏览器都会自动执行此操作。
我猜我必须专门针对Chrome。
有什么办法吗?
如果不使用CSS,那么使用jQuery?
亲切的问候。
除Chrome之外的所有浏览器都会自动执行此操作。
我猜我必须专门针对Chrome。
有什么办法吗?
如果不使用CSS,那么使用jQuery?
亲切的问候。
Answers:
<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!">
Firefox 15和IE 10+现在也支持此功能。扩展Casey Chu的CSS 解决方案:
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+ */
在@Hexodus和@Casey Chu的答案的基础上,这是一个更新的跨浏览器解决方案,该解决方案利用CSS不透明性和过渡效果来淡化占位符文本。它适用于可以使用占位符的任何元素,包括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 */
编辑:更新为支持现代浏览器。
您是否尝试过占位符attr?
<input id ="myID" type="text" placeholder="enter your text " />
-编辑-
我知道了,然后尝试以下操作:
$(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/
-编辑-
实际上,由于应该使用占位符来描述值,而不是输入名称。我建议以下替代方案
的HTML:
<label class="overlabel">
<span>First Name</span>
<input name="first_name" type="text" />
</label>
javascript:
$('.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();
});
CSS:
.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;
}
测试:
为了扩大@ casey-chu和海盗抢夺的答案,这是一种更兼容跨浏览器的方式:
/* 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;
)!该线程中唯一具有所有可能的浏览器支持的CSS解决方案!
Toni的答案很好,但是我宁愿删除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”属性的元素上运行...
$("[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
感谢@Rob弗莱彻对他的伟大的答案,在我们公司,我们已经使用
因此,请考虑添加以应用容器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;
}
使用纯CSS可以为我工作。输入时/输入时使其透明
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;
}
为了进一步完善WallaceSidhrée的代码示例:
$(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'));
});
})
这样可以确保每个输入在data属性中存储正确的占位符文本。
在jsFiddle中查看一个工作示例。
我喜欢css的方法,特别注重过渡效果。在焦点上,占位符逐渐消失;)也适用于文本区域。
感谢@Casey Chu的好主意。
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;
}
结合使用SCSS和http://bourbon.io/,此解决方案简单,优雅,并且可在所有Web浏览器上使用:
input:focus {
@include placeholder() {
color: transparent;
}
}
使用波旁威士忌!这是对你有好处 !
对于基于纯CSS的解决方案:
input:focus::-webkit-input-placeholder {color:transparent;}
input:focus::-moz-placeholder {color:transparent;}
input:-moz-placeholder {color:transparent;}
注意: 并非所有浏览器供应商都支持。
参考:使用 Ilia Raiskin的CSS隐藏焦点上的占位符文本。
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'));
});
});
}
除了上述所有以外,我还有两个想法。
您可以添加一个模仿palceholder的元素。然后使用javascript控制该元素的显示和隐藏。
但是它是如此复杂,另一个正在使用兄弟的css选择器。就像这样:
.placeholder { position: absolute; font-size: 14px; left: 40px; top: 11px; line-height: 1; pointer-events: none; }
.send-message input:focus + .placeholder { display: none; }
23333,我英语不好。希望能解决您的问题。
试试这个功能:
+它会将PlaceHolder隐藏在焦点上,并在模糊时将其返回
+此功能取决于占位符选择器,首先它选择具有占位符属性的元素,触发一个聚焦功能,另一个触发模糊功能。
重点关注:它向元素添加属性“数据文本”,该元素从占位符属性获取其值,然后删除占位符属性的值。
在模糊时:它将返回占位符值,并将其从数据文本属性中删除
<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;
}
/* 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; }