Какая разница между 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/

Удачи.