Я думаю, что название достаточно ясно
Какая разница между jQuery.val() и .attr('value')?
Ответ 1
.val()
работает над всеми элементами типа ввода полезным способом, включая <select>
... даже в случаях <select multiple>
, флажки и переключатели (в которых .val()
получает или задает массив выбранных значений, а не только строку).
Таким образом, в основном они служат для разных целей, хотя .attr('value')
ведет себя одинаково в некоторых ситуациях, например текстовых. Предпочтительным методом является .val()
, чтобы повсюду получить согласованное поведение.
Просто для пинков, здесь менее известный пример для флажков, который делает .val()
удобным:
<input name="mytest" type="checkbox" value="1">
<input name="mytest" type="checkbox" value="2">
<input name="mytest" type="checkbox" value="3">
<input name="mytest" type="checkbox" value="4">
Вы можете сделать это:
$("input[name='mytest']").val([1, 2, 3]);
...., который будет проверять первые 3 окна. Вы можете попробовать здесь.
Ответ 2
Также .attr('value') возвращает значение, которое было перед редактированием поля ввода. И .val() возвращает текущее значение.
Ответ 3
Чтобы добавить к ответу actis...
Также .attr('value') возвращает значение, которое было перед редактированием ввода поле. И .val() возвращает текущее значение.
При работе с полем ввода текста методы setter() и .val() работают по-разному.
.val('newval')
установит значение, которое пользователь видит на странице, и обновит значение, возвращаемое последующими вызовами метода .val(). Он не будет устанавливать атрибут value = элемента.
Ото
.attr('value','newval')
установит атрибут value = для элемента. Если пользователь не набрал и .val(newval) не был вызван, тогда выполнение этого также визуально обновит элемент управления и обновит значение, возвращаемое .val().
Далее вы можете исследовать следующий jsfiddle:
https://jsfiddle.net/jasonnet/vamLww2k/
Удачи.