使用jQuery删除输入框的占位符

9

有人知道如何使用jquery删除输入占位符吗?

我想做的是,如果其中一个获得了值...所有的占位符都将被删除...有人知道如何做到这一点吗?

<input type="text" name="name" placeholder="1.)">
<input type="text" name="age" placeholder="2.)">
<input type="text" name="address" placeholder="3.)">
10个回答

23

应该有效:

$(':input').removeAttr('placeholder');

4
获取所有输入框,并附加一个更改事件处理程序,在事件处理程序内获取所有输入框的值,将这些值拼接在一起,如果仍然为空,则表示没有任何输入框有值;如果长度不为0,则至少有一个输入框有值,此时可以移除占位符属性。
var inputs = $('input[type="text"]');

inputs.on('change', function() {
    if ( $.map(inputs, function(el) { return el.value; }).join('').length ) 
        inputs.removeAttr('placeholder');
});

FIDDLE


可能需要一点解释:p - Reinstate Monica Cellio
1
@Archer - 就像那样! - adeneo

3

我不建议删除占位符

相反,可以通过设置焦点来在那一刻自动隐藏占位符:

$(element).focus();

这对我来说是正确的解决方案,因为当文本从输入框中移除时,占位符将重新出现。您还可以按顺序聚焦所有元素,因此它也适用于多个输入。在removeAttr解决方案中,占位符将保持被移除状态,直到它被显式地设置为属性为止。 - Jankapunkt

2

.removeAttr()

var txtbox = $('input[type="text"]');
txtbox.change(function () {
    txtbox.removeAttr('placeholder');
});

0
$('input[name="name"]').removeProp('placeholder');

0

您可以在 keyup 事件中将占位符更改为空字符串。

$("input[type=text]").keyup(function() {
    $("input[type=text]").attr("placeholder","")
});

JSFiddle演示


0
这样的代码是否可行?虽未经测试,但应该可以在第一次更改任何输入时删除占位符属性。
var inputs = $('input');

inputs.one('change', function(){
    inputs.removeAttr('placeholder');
});

0

我做了更进一步的改进,以防你也需要。这段代码将删除所有文本输入框中的占位符文本,如果它们中的任何一个有值,但如果你删除了所有的值,它会把占位符文本放回去。可能不是必需的,但还是保留吧...

var $inputs = $("input:text");

$inputs.on("change", function() {
    if ($.map($inputs, function(el) { if (el.value) return o.value; }).length) {
        $inputs.each(function() {
            this._placeholder = this.placeholder;
            $(this).removeAttr("placeholder");
        });
    } else {
        $inputs.each(function() {
            this.placeholder = this._placeholder;
        });
    }
});

jsfiddle 示例...


0
如果你想将它重置回原始的占位符而不是完全删除它,尝试先清除val(),然后再添加attr()。

$('#name').val('');

$('#name').attr('placeholder', '无论之前的占位符是什么');


-1

尝试:

if ($(input).val()) {
$(input).attr("placeholder", "")
}

$(input) 不会选择任何输入,除非 input 是一个值为 "input"(或类似)的字符串,并且您不能在集合上使用 val() - 只能在单个对象上使用。 - Reinstate Monica Cellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接