Javascript и defaultValue скрытых элементов ввода

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

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

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

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

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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