我正在使用“占位符”attr。对于输入字段中的占位符文本
我也需要在IE-incarnations中拥有此功能。
我希望占位符隐藏在FOCUS上!我发现的每个解决方法都会在输入第一个类型时隐藏占位符。
我自己无法解决问题,它只需要在焦点上删除输入的占位符文本,但如果输入值为空,还可以在模糊处恢复占位符文本。
我试图将其付诸实践
jQuery(document).ready(function () {
jQuery('[placeholder]').focus(function() {
input = jQuery(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
input.attr('placeholder','')
}
}).blur(function() {
var input = jQuery(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
jQuery(this).find('[placeholder]').each(function() {
var input = jQuery(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
});
});
这会将占位符的值更改为“(无)”并且行为符合我的要求但是在模糊时它无法恢复占位符值,因为它的“(无)”现在
//更新
我的解决方案:
$(function()
{
$('input').each(function()
{
$(this).val($(this).attr('holder'));
});
$('input').focus(function()
{
if($(this).attr('holder')==$(this).val())
{
$(this).val('');
}
});
$('input').focusout(function()
{
if($.trim($(this).val())=='')
{
var holder = $(this).attr('holder');
$(this).val(holder);
}
});
});
答案 0 :(得分:3)
答案 1 :(得分:3)
如果您不想使用placeholder
,可以使用下面的代码或使用这个简单的jQuery插件:
jQuery Placeholder。
jsFiddle Live Demo Of Code Below
的 HTML 强>
<input type='text' holder='First name'><br>
<input type='text' holder='Last name'><br>
<input type='text' holder='Age'>
的的JavaScript 强>
$(function() {
$('input').each(function() {
$(this).val($(this).attr('holder'));
});
$('input').focus(function() {
if($(this).attr('holder')==$(this).val()) {
$(this).val('');
}
});
$('input').focusout(function() {
if($.trim($(this).val())=='') {
var holder = $(this).attr('holder');
$(this).val(holder);
}
});
});
你也可以使用这个简单的jQuery插件:jQuery Placeholder。
答案 2 :(得分:2)
旧而不是最好的方法是:
<input type="text" name="fname" value="Enter text here" onFocus="if (this.value=='Enter text here'){this.value='';}"
onBlur="if (this.value==''){this.value='Enter text here';}" />
但它甚至可以在IE6中使用。
答案 3 :(得分:2)
对于基于Webkit的浏览器和Firefox,您可以在纯CSS中隐藏占位符:
input:focus::-webkit-input-placeholder,
input:focus::-moz-placeholder { opacity:0; }
答案 4 :(得分:0)
有一些polyfill会在不支持它的浏览器中“添加”占位符功能。我过去曾使用jQuery Placeholder,但modernizr docs中提到了很多其他内容(向下滚动到占位符部分)。
关于jQuery Placeholder的好处是除了对库的引用之外,你不必更改/添加任何代码。只需将placeholder
属性添加到元素中即可。
答案 5 :(得分:0)
这是我在输入和textarea focus()上隐藏占位符文本的代码。简单而有效。
$('textarea,input').focus(function(e){
val=$(this).attr('value');
if (!val)
$(this).attr('value',' ');
this.select();
}).blur(function(e){
val=$(this).attr('value');
if (val==' ')
$(this).attr('value','');
});
答案 6 :(得分:0)
当输入获得焦点时,输入失去焦点且为空时,我使用这两种方法(jquery)隐藏占位符。
input.focus
input.focusout
步骤1:将输入的占位符属性设置为已保存的变量(此处为pl)
var pl;
//on getting focus
$('input').focus(function(){
pl=$(this).prop('placeholder');
$(this).prop('placeholder','');
});
// on losing focus:
$('input').focusout(function(){
$(this).prop('placeholder',pl);
});