В основном при вызове .attr("value")
над текстовым полем оно вернет свое значение, которое было установлено в разметке, а не значение, которое было установлено с помощью .val()
.
Например,
<input id="test" type="text" value="testing" />
Js:
$("#test").val("hello");
console.log($("#test").val()); //hello
console.log($("#test").attr('value')); //testing
Но, делая то же самое над скрытым элементом, результат был другим, как показано ниже,
HTML:
<input id="test1" type="hidden" value="testing" />
Js:
$("#test1").val("hello");
console.log($("#test1").val()); //hello
console.log($("#test1").attr('value')); //hello
DEMO
Атрибут value проигнорирован, если мы установили значение для этого элемента с помощью .val()
. У кого-нибудь есть идея, почему это происходит? Соответствующая ссылка, которая содержит подробности для этого поведения, будет более полезна.