2014-09-09 3 views
1

Я пытаюсь имитировать поведение placeholder, поэтому я пытаюсь сохранить исходное значение при загрузке страницы. используя этот код. Я здесь, потому что он не работает. значение пусто.Свойство не работает

$().ready(function() { 
    $("input").prop("placeHolder", $(this).val()); 
    /* 
    also tried: 
     $("input").prop("placeHolder", $(this).attr("value")); 
    */ 
} 
+3

Подсказка - что вы думаете '$ (this)' находится в вызове '.prop()'? Это не ** элемент 'input'! – Alnitak

+1

Также это «placeholder» не «placeHolder». – Pointy

+0

Если это не «вход», что это? ** это 'placeHolder', так как я пытаюсь создать новое, другое, свойство. ** '$()' не является сокращением для '$ (document)'? – yossi

ответ

2

Попробуйте это:

$(document).ready(function(){ 
    $("input").prop("placeholder", function(){ 
     return $(this).val() 
    }); 
}); 

С $().ready() Я думаю, вы ссылаетесь на метод $(document).ready().

В вашем случае $(this) не ссылается на ваш input. Он получает родителя от этого предложения. В этом случае $().

Вы можете делать то, что я написал выше, или это тоже будет работать:

$(document).ready(function(){ 
    $("#input_id").prop("placeholder", $("#input_id").val()); 
}); 

Это будет работать на один вход, если вы хотите другой способ заставить его работать на всех входах это тоже будет работать:

$(document).ready(function(){ 
    $("input").each(function(){ 
     $(this).prop("placeholder", $(this).val()); 
    }); 
}); 

Обратите внимание, что в этом случае $(this) ссылается на повторный ввод.

+1

Там были ответы, когда я написал мои. Может быть, они были написаны, пока я писал и тестировал. –

+1

достаточно, но ваш последний код работает только для одного элемента, а не «все элементы ввода» – Alnitak

+0

Обновлено на всякий случай –

2

В исходном коде $(this) является не текущего input элемента. Это будет любой объект, который передается как this по $().ready() - возможно, объект document. (Я проверил - это!)

Это должно делать то, что вам требуется:

$('input').prop('placeholder', function() { 
    return this.value; 
}); 

Эта версия .prop будет вызывать указанную функцию, передавая каждый элемент, в свою очередь, как this, позволяя прямой доступ к этому DOM другие свойства элемента.

1

Атрибут чувствителен к регистру, поэтому он должен быть «заполнитель И вы можете использовать функцию, чтобы установить атрибут с:.

$("input").prop("placeholder", function() { 
    return $(this).val() 
}); 

jsFiddle example

+0

для элемента 'input',' $ (this) .val() === this.value', но последний является _way_ более эффективным – Alnitak

+1

@Alnitak I * знал * вы собирались что-то сказать об этом. – j08691

+0

хе-хе, :) извините! – Alnitak

Смежные вопросы