Почему .attr('значение') скрытого элемента ввода не возвращает исходное значение из строки html?
В основном при вызове .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
Атрибут value проигнорирован, если мы установили значение для этого элемента с помощью .val()
. У кого-нибудь есть идея, почему это происходит? Соответствующая ссылка, которая содержит подробности для этого поведения, будет более полезна.
Ответы
Ответ 1
Входы Hidden
не редактируются пользователем, поэтому вы можете обнаружить, что значения по умолчанию и текущие значения для них одинаковы. Таким образом, .val()
и .attr('value')
одинаковы для элемента Hidden
Насколько мне известно, атрибут value
описывает значение по умолчанию для элемента, а не текущее значение. Текущее значение - это то, к чему вы можете получить доступ через свойство value (это то, что делает jQuery val()
).