如果“value”字段为空,如何添加占位符属性

时间:2012-10-20 22:06:58

标签: javascript jquery

如果您有一个“value”属性为空的文本输入字段,是否有办法添加占位符属性(占位符标记,而不是“defaultvalue”和类似的方法)?

我在这里看过很多类似的问题,但大多数都使用defaultvalue。我需要占位符标签,另外我根本不能影响HTML输出。

这是给定的HTML输出示例:

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

3 个答案:

答案 0 :(得分:11)

我建议采用以下任何一种方法:

$('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'

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的占位符对象中不存在条目,则添加了一个catch / fall-back:

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

答案 1 :(得分:4)

如果你正在使用HTML5(你应该),那就有一个原生的占位符属性。

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

修改

正如您所说,您无法编辑HTML并且必须使用JS,这可能有所帮助。

$('#edit-textbox')。attr('placeholder','My placeholder!');

再一次,这是针对HTML 5。

答案 2 :(得分:0)

(function($) {

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

})(jQuery);