И attr()
, и val()
имеют дело исключительно со свойством value
[обновление февраль 2014: это было верно до jQuery 1.6, но неверно с момента введения prop()
в 1.6] , не атрибут.Атрибут value
указывает только начальное значение ввода.Как только фактический текст во входных данных был изменен (либо пользовательским вводом, либо сценарием), свойство и атрибут значения работают совершенно независимо.Почти во всех случаях это не имеет значения, потому что это почти всегда текущее значение, которое вы хотите (и именно это значение передается на сервер).
Если вам действительно нужно изменить фактический атрибут (которыйЯ почти уверен, что нет), сделайте это через setAttribute()
:
input[0].setAttribute('value', 'myNewVal');
Обратите внимание, что IE <8 (и режимы совместимости в IE 8) сломал поддержку <code>getAttribute() и setAttribute()
сопоставляет атрибуты со свойствами, поэтому вышеприведенное не применимо в этих браузерах.