Javascript и defaultValue скрытых элементов ввода - PullRequest
15 голосов
/ 16 марта 2011

Предположим, у вас есть элемент ввода:

<input id="aaa" type="text" value="unchanged" />

Затем запустите скрипт js:

var e = document.getElementById("aaa");
e.value = "changed";
alert(e.defaultValue + "/" + e.value);

Результат будет "неизменен / изменен".К сожалению, когда ваш элемент ввода hidden:

<input id="aaa" type="hidden" value="unchanged" />

... тот же самый js-скрипт, похоже, больше не работает.Результат «изменен / изменен».Это правильный путь?Если так, то почему только скрытые элементы формы действуют иначе?

Ответы [ 2 ]

12 голосов
/ 16 марта 2011

Свойство defaultValue поддерживается только так, как вы ожидаете для полей «текст», «файл» и «пароль».

Здесь - соответствующая часть спецификации DOM.

Я подозреваю, что причина этого в том, что активность пользователя сама по себе не может изменить значение скрытых элементов. Если вы хотите сохранить начальные значения, запустите что-нибудь в «load» или «ready», чтобы где-то спрятать значение.

3 голосов
/ 16 марта 2011

Для скрытых элементов ввода defaultValue на самом деле не реализовано .Причина, по которой вы получаете тот же результат, что и .value, заключается в том, что используемый вами браузер просто по умолчанию.

См. здесь , чтобы обсудить это с Firefox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...