Почему функция jQuery val() не обновляет атрибут "value"?

я столкнулся с этой проблемой после того, как я завершил веб-сайт, так как мне пришлось реализовать историю на странице ajax (которая требует обновления определенных мест с помощью html (который включает формы с простым текстом входы - вот где проблема - они не получают свои значения, потому что у них есть свои значения, установленные val (), а не attr() - ложь)). Я обречен на замену всего javascript от

$('#xxx').val('someValue');

to

$('#xxx').attr('value', 'someValue');

или есть какая-то надежда, чтобы обойти это?

довольно тривиальный пример здесь. Как вы можете видеть в диалоговом окне, attribute стоимостью в HTML код.

1 ответов


он использует базовый уроженца element.value = 'someValue' это, конечно, устанавливает значение свойства элемента

element.property_to_set = 'new_value';

поэтому он не изменяет атрибут, который был бы

element.setAttribute('value', 'someValue')

что attr() не внутренне, а prop() меняет свойство, как val().
Почему он меняет свойство, это свойство используется в форме представления, и это нормально, что используется, чтобы получить значение в JavaScript, а также, поэтому имеет смысл придерживаться свойства, а не атрибута, поскольку атрибут обычно используется только для установки начального значения свойства, а изменение атрибута позже с помощью javascript не обновляет свойство, что было бы противоположной проблемой того, что у вас есть, и это повлияло бы на все формы и было бы серьезной проблемой.